Python:将文件从一个目录复制到另一个读取图层列

问题描述:

我有一个带有两列的表,其中包含目录和/或文件的链接以及NULL 每个记录都有一个“NAME”列作为新目录的名称 类似于这Python:将文件从一个目录复制到另一个读取图层列

... NAME HOTLINK1     HOTLINK2 
... name1 C:\...\directory1   C:\...\directory6\file 
... name2 C:\...\directory2   NULL 
... name3 C:\...\directory5\file C:\...\directory 
... name4 NULL      NULL 

我试图写代码复制目录中的全部内容(包含子目录),并从HOTLINK1和HOTLINK2文件到新目录“NAME”。

所以:

  • 如果HOTLINK是一个目录>>>复制目录中的全部内容(包含子目录)

  • 如果盗链是一个文件>>>复制该文件

  • 如果是NULL >>通过。

+0

请尝试对这个问题的工作要求我们写代码,而不是为你。 –

+0

对不起,你是对的。我改变了请求的类型。随着最后一个答案,我正在写一些代码。 –

你已经有了一个非常清晰的人类语言方法,也许只需要一些提示就可以在Python代码中编写它们。

  1. 如何读取每行和链接列,通过换行符解析字符串和按空格拆分应该工作。
  2. 如何判断路径是文件还是目录(或至少存在)?尝试os.path模块。
  3. 如何复制文件或文件夹?尝试shutil模块。
  4. 注意Windows系统的文件路径中的反斜线,它需要被转义。
+0

人类的语言很清楚,但我是Pyhton初学者:-)。我尝试使用逻辑推理 。 –

import os 
print(os.path.isdir("/home/el")) 

结果真或假

print(os.path.exists("/home/el/myfile.txt")) 

结果真或假

import shutil 
shutil.copytree('hotlink1', 'hotlink2') 

承蒙@Dev Jalla的建议,并@Neo X我写这篇文章的代码工作。 它使用了一列HOTLINK1的值。现在我不知道添加代码,以产生具有HOTLINK2值同样的事情,而文件夹的卡勒“NAME”已存在:

import shutil 
    import csv 
    import os 

    source='D:\\Prova_copy_pyhton\\' 
    with open('D:\\Prova_copy_pyhton\\list.csv') as csvfile: 
      reader = csv.DictReader(csvfile, delimiter=';') 
      for row in reader: 

       a = row['hotlink1'] 
       fa= os.path.basename(a) 
       out = row['name'] 

       if os.path.isdir(a): 
       shutil.copytree(a, os.path.join(source, out)) 

       elif os.path.exists(a): 
        try: 
         os.stat(os.path.join(source, out)) 
        except: 
         os.mkdir(os.path.join(source, out)) 
         shutil.copy(a, source+out+'\\'+fa)