在目录中查找文件并创建目录的Python脚本

时间:2019-02-04 19:59:07

标签: python python-3.x

我有两个功能。

def find()

def copy()

def find()-获取目录名称root和简单文件名(不带斜杠),并在以root为根的子树中搜索所有简单名称为target的文件。它打印出这些文件的绝对路径名列表。如果root不是有效的目录名称,则它应该显示一条消息并立即退出。

def copy()-它创建一个新目录newdir,并将找到的每个文件复制到该目录。复制文件的目标名称应为绝对路径名,并删除前导斜杠(/),并将所有其他斜杠替换为下划线()。如果newdir已经存在或由于某种原因无法创建,可以引发异常。

下面是我到目前为止解决该问题的代码。

运行它时,第10行出现错误

python3 find.py --copy zz /Desktop/test a.txt

AttributeError:“列表”对象没有属性“替换”

import sys
import os
import shutil

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

def find(directory, filename):
  l = []
  for(dirname,subshere,fileshere) in os.walk(directory):
    if filename in fileshere:
       l.append(os.path.join(dirname,filename))
  return l

def usage():
  print ('usage: ./find.py [--copy dirname] root file')

def main():
  if len(sys.argv) < 2: usage()
  if sys.argv[1] == '--copy':
     if len(sys.argv) < 5: usage()
     new_dir = sys.argv[2]
     root = sys.argv[3]
     filename = sys.argv[4]
     found = find(root,filename)
     for f in found:
       print(f)
     copy(found,new_dir)
  else:
     if len(sys.argv) < 3: usage()
     root = sys.argv[1]     
     filename = sys.argv[2]
     found = find(root,filename)
     for f in found:
       print(f)

if __name__ == '__main__':
  main()

还有其他使用替换的方法来摆脱替换中需要的字符吗?谢谢

0 个答案:

没有答案