将目录从路径复制到当前目录

时间:2020-02-18 09:35:22

标签: python directory copy

以下python代码获取文件特定实例的文件路径列表,以将其复制到当前目录中,并在标题中包含路径名:

python3 find.py --copy zz /Users/apt/testdir a.txt 
/Users/apt/testdir/d1/a.txt 
/Users/apt/testdir/d1/d3/a.txt 
/Users/apt/testdir/d1/d3/d4/a.txt 
/Users/apt/testdir/d1/d3/d5/a.txt
$ ls zz
Users_apt_testdir_d1_a.txt     
Users_apt_testdir_d1_d3_d4_a.txt
Users_apt_testdir_d1_d3_a.txt  
Users_apt_testdir_d1_d3_d5_a.txt

一切正常,但我的复制功能:

def copy(f, new_dir):
   file_name=str(f[1:])
   file_name=file_name.replace('/', "_")
   file_path=os.path.join(new_dir, file_name)
   shutil.copy(file_path, new_dir)                                                                                         
   os.chdir(os.path.abspath(new_dir))
   os.rename(list(os.path.split(f))[1], file_name)

FileNotFoundError: [Errno 2] No such file or directory: "zz/['_u_macole_testdir_d1_d3_a.txt', '_u_macole_testdir_d1_d3_d4_a.txt', '_u_macole_testdir_d1_d3_d5_a.txt']

1 个答案:

答案 0 :(得分:0)

错误非常明显,filenew_dir没有好的类型。由于file是一个列表,因此您需要每次迭代并调用copy: 像

def copy(f, new_dir):
   file_name=str(f[1:])
   file_name=file_name.replace('/', "_")
   file_path=os.path.join(new_dir, file_name)
   shutil.copy(file_path, new_dir)                                                                                         
   os.chdir(os.path.abspath(new_dir))
   os.rename(f, file_name)

for i in f:
   copy(i, new_dir)