2017-01-04 21 views
0

私は次のようにJPG画像を含むフォルダの画像(JPGE_Image)を持っている:すべてのファイルをtxtファイルのパスからフォルダにコピーする方法は?

1.jpg 
2.jpg 
3.jpg 
... 
100.jpg 

私はちょうど1.JPGとして選択これらの選択されたJPEG画像(ないすべての画像のパスが含まれている他のテキストファイルを持っています、 3.JPG ...)

/home/users/JPGE_Image/1.jpg 
/home/users/JPGE_Image/3.jpg 
/home/users/JPGE_Image/5.jpg 
... 
/home/users/JPGE_Image/99.jpg 

として、私はSelected_Folderという名前のフォルダにテキストファイルに選択した画像をコピーしたいです。どのように私はPython 2.7でそれを行うことができます。ありがとうございました。これは私が試したものですが、それは

import os 
import shutil 

srcfile = '/home/users/JPGE_Image/1.jpg' 
dstroot = '/home/users/Selected_Folder' 


assert not os.path.isabs(srcfile) 
dstdir = os.path.join(dstroot, os.path.dirname(srcfile)) 

os.makedirs(dstdir) # create all directories, raise an error if it already exists 
shutil.copy(srcfile, dstdir) 
+0

なぜコードが機能していないのか分かりませんが、これが単なるタスクの場合は、この1つのライナーでbashで実行することを検討してください:https://gist.github.com/a452c5672fa00837aee53f4380d5e379 –

+0

あなたが意味するものは、_情報を取得しませんでした。何かエラーが発生しますか? – Arman

+1

私は彼が、ソースパスがtxtファイルに入る代わりに手動で設定されていることを意味すると思います。 – Jame

答えて

2

あなたは自分を適用する必要がありますライン毎の論理は、次のように:あなたは、各ラインを読んで、末尾の改行を削除するためにstrip()を使用

import os 
import shutil 

text_file_list = 'my_text_file.txt' 
dstroot = '/home/users/Selected_Folder' 

try: 
    os.makedirs(dstroot) 
except OSError as e:  # catch exception if folder already exists 
    pass 

with open(text_file_list) as f_input: 
    for srcfile_path in f_input: 
     srcfile_path = srcfile_path.strip() 
     srcfile = os.path.split(srcfile_path)[1] 
     dstdir = os.path.join(dstroot, srcfile) 
     shutil.copy(srcfile_path, dstdir) 

。次に、os.path.split()を使用して、ソースのファイル名だけを取得します。これをあなたのdstdirに加えることができます。

+0

ありがとうございます。返事遅れて申し訳ありません。私はあなたのコードを試してみたところ、 'assert not os.path.isabs(srcfile)'で 'assert not os.path.isabs( '/ media/users/data/JPGE_Image/2007_000032.jpg')というAssertionError'というエラーが出ましたメディアとはディスクを意味します。私はubuntuにいて、私のフォルダはディスクのデータです。 – user8264

+0

すべての画像ファイルは1つのフォルダにありますか?もしそうなら、 'mstirs()'は 'dstroot'に一度だけ必要です。 –

+0

はい。 'JPGE_Image'という名前のフォルダ内のすべてのイメージjpg。フォルダ内の画像を別のフォルダにコピーして、コピーした画像の名前をtxtファイル – user8264

3

あなたはこのように、線でtxtファイルの行からのパスを読み取ることができるテキストファイルから情報を取得できません:

with open(txtfile_path) as f: 
    for srcfile in f: 
     shutil.copy(srcfile, dstdir) 
関連する問題