【问题标题】:Copy certain files from one folder to another using python使用python将某些文件从一个文件夹复制到另一个文件夹
【发布时间】:2015-04-27 01:13:58
【问题描述】:

我正在尝试仅将某些文件从一个文件夹复制到另一个文件夹。文件名位于 shapefile 的属性表中。

我成功地将文件名写入 .csv 文件并列出包含要传输的文件名列表的列。在那之后我被困在如何读取这些文件名以将它们复制到另一个文件夹中。我已阅读有关使用 Shutil.copy/move 但不确定如何使用它的信息。任何帮助表示赞赏。以下是我的脚本:


import arcpy
import csv
import os
import sys
import os.path
import shutil
from collections import defaultdict
fc = 'C:\\work_Data\\Export_Output.shp'
CSVFile = 'C:\\wokk_Data\\Export_Output.csv'
src = 'C:\\UC_Training_Areas'
dst = 'C:\\MOSAIC_Files'

fields = [f.name for f in arcpy.ListFields(fc)]
if f.type <> 'Geometry':
    for i,f in enumerate(fields):

        if f in (['FID', "Area", 'Category', 'SHAPE_Area']):
            fields.remove (f)    

with open(CSVFile, 'w') as f:
f.write(','.join(fields)+'\n') 
with arcpy.da.SearchCursor(fc, fields) as cursor:
    for row in cursor:
        f.write(','.join([str(r) for r in row])+'\n')

f.close()


columns = defaultdict(list) 
with open(CSVFile) as f:
  reader = csv.DictReader(f) 
  for row in reader: 
      for (k,v) in row.items(): 
         columns[k].append(v) 


print(columns['label'])

【问题讨论】:

  • 您可能想要编辑您的代码,以便它可以通过复制/粘贴运行。缩进等...现在已关闭。此外,当您使用with(open(filename, 'w') as f:.... 成语时,您不需要使用f.close()。当您退出 with 块时,文件将自动关闭。最后,一个问题...在此示例中是最后一行打印的文本 print(columns['label']) 您要复制到目标的文件的名称目录 ?否则,我很好奇

标签: python file csv filenames


【解决方案1】:

给定文件名 columns['label']你可以使用以下移动文件

srcpath = os.path.join(src, columns['label'])
dstpath = os.path.join(dst, columns['label'])
shutil.copyfile(srcpath, dstpath)

【讨论】:

    【解决方案2】:

    这是我用来解决问题的脚本:

    import os
    import arcpy
    import os.path
    import shutil
    featureclass = "C:\\work_Data\\Export_Output.shp"
    src = "C:\\Data\\UC_Training_Areas"
    dst = "C:\\Data\\Script"
    
    rows = arcpy.SearchCursor(featureclass)
    row = rows.next()
    while row:
         print row.Label
         shutil.move(os.path.join(src,str(row.Label)),dst)
         row = rows.next()
    

    【讨论】:

      【解决方案3】:

      以这种方式考虑源和目标 假设您要将文件从图片文件夹复制到位于计算机目的地某处的图像文件夹
      X 是你的机器名 Z 是文件名``

      import os;
      import shutil;
      import glob;
      
      source="C:/Users/X/Pictures/test/Z.jpg"
      dest="C:/Users/Public/Image"
      
          if os.path.exists(dest):
          print("this folder exit in this dir")
      else:
          dir = os.mkdir(dest)
      
      for file in glob._iglob(os.path.join(source),""):
          shutil.copy(file,dest)
          print("done")
      

      【讨论】:

        猜你喜欢
        • 2018-09-02
        • 1970-01-01
        • 1970-01-01
        • 2014-12-02
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 2023-01-14
        • 2017-07-23
        相关资源
        最近更新 更多