Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将文件从一个目录复制到另一个目录,读取层列_Python_Copy - Fatal编程技术网

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

Python:将文件从一个目录复制到另一个目录,读取层列,python,copy,Python,Copy,我有一个包含两列的表,其中有指向目录和/或文件的链接,并且为NULL 每个记录都有一列“NAME”作为新目录的名称 像这样的 ... NAME HOTLINK1 HOTLINK2 ... name1 C:\...\directory1 C:\...\directory6\file ... name2 C:\...\directory2 NULL ... name3 C:\...\directory5\file

我有一个包含两列的表,其中有指向目录和/或文件的链接,并且为NULL 每个记录都有一列“NAME”作为新目录的名称 像这样的

...  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”

因此:

  • 如果热链接是一个目录>>>复制目录的全部内容(包括子目录)

  • 如果热链接是一个文件>>>请复制该文件

  • 如果为空>>通过


    • 您已经有了一个非常清晰的人类语言方法,也许只需要一些技巧就可以用Python代码编写它们

    • 如何读取每一行和链接列,通过换行符解析字符串,以及通过空格拆分字符串都应该是可行的
    • 如何判断路径是文件还是目录(或至少存在)?尝试
      os.path
      模块
    • 如何复制文件或文件夹?尝试使用
      shutil
      模块
    • 注意Windows系统文件路径中的反斜杠,它需要转义
    • 结果是真是假

       print(os.path.exists("/home/el/myfile.txt"))
      
      import shutil
      shutil.copytree('hotlink1', 'hotlink2')
      
      结果是真是假

       print(os.path.exists("/home/el/myfile.txt"))
      
      import shutil
      shutil.copytree('hotlink1', 'hotlink2')
      

      感谢@和@的建议,我已经编写了这段代码。 它使用了一列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)
      

      请尝试解决这个问题,而不是要求我们为您编写代码。对不起,您是对的。我更改了请求的类型。根据最后一个答案,我正在编写一些代码。人类语言很清晰,但我是Pyton初学者:-)。我试着用逻辑推理。