2017-03-12 1 views
0

ファイルをフォルダからデスクトップにPythonで移動しようとしています。しかし、エラーが発生しています。 以下は私のコードとエラーです:Pythonでフォルダからデスクトップにファイルを移動しようとしています。しかし、エラーが発生しています

import shutil 
import os 
source_dir = 'C:\Users\dupakunt\Desktop\Testdir' 
os.makedirs(source_dir) 
os.chdir(source_dir) 
open("newfile1.txt", "w") 
open("newfile2.txt", "w") 
target = 'C:\Users\dupakunt\Desktop' 
dir_list = os.listdir(source_dir) 
for x in source_dir: 
    print x 
    shutil.move(x,target) 

エラー:

Traceback (most recent call last): 
    File "cleanup-undo.py", line 12, in <module> 
    shutil.move(x,target) 
    File "C:\Python27\lib\shutil.py", line 302, in move 
    copy2(src, real_dst) 
    File "C:\Python27\lib\shutil.py", line 130, in copy2 
    copyfile(src, dst) 
    File "C:\Python27\lib\shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 
IOError: [Errno 2] No such file or directory: 'C'. 

答えて

0

source_dirは、ディレクトリ名では、ディレクトリ内のファイルdir_listを介して実行します。出席するその他のアイテムがいくつかあります

  • 文字列の印刷できない文字をエスケープするためにバックスラッシュが使用されています。生の文字列をパス区切りにするには、それを使用してください。あるいは、/区切り文字を使って、PythonでLinuxやWindowsで動作します。
  • chdirと絶対パスを混同するのは混乱します。可能であればchdirを避け、os.path.joinを使用して絶対パスを絶対パスにすることをおすすめします。
  • with節を使用してください。あなたのコードはcpythonで動作しますが、他のいくつかの亜種では、ファイルはopenが完了した後もまだ開いているかもしれません。
  • ディレクトリを列挙するときは、サブディレクトリをフィルタ処理します。

import shutil 
import os 
source_dir = r'C:\Users\dupakunt\Desktop\Testdir' 
os.makedirs(source_dir) 
with open(os.path.join(source_dir, "newfile1.txt"), "w"): 
    pass 
with open(os.path.join(source_dir, "newfile2.txt"), "w"): 
    pass 
target = r'C:\Users\dupakunt\Desktop' 
dir_list = os.listdir(source_dir) 
for x in dir_list: 
    if os.path.isfile(x): 
     x = os.path.join(target, x) 
     print x 
     shutil.move(x,target) 
+0

こんにちは。変更されたコードはエラーを表示していません。しかし、それはdirからデスクトップにファイルを移動しません。私のpythonバージョンは2.7で、Windows 7のマシンでこれを実行しています。 –

+0

私の悪い...私は目的地のパスを構築するのを忘れました。 – tdelaney

+0

と同じです。エラーはありませんが、フォルダーからデスクトップにファイルを移動しないTestdir –

関連する問題