使用 python 将某些文件从一个文件夹复制到另一个文件夹
Copy certain files from one folder to another using python
我正在尝试仅将某些文件从一个文件夹复制到另一个文件夹。文件名位于 shapefile 的属性 table 中。
我成功地将文件名写入 .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'])
给定文件名
columns['label']
您可以使用以下方法移动文件
srcpath = os.path.join(src, columns['label'])
dstpath = os.path.join(dst, columns['label'])
shutil.copyfile(srcpath, dstpath)
这是我用来解决问题的脚本:
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()
这样想源和目标
假设你想将文件从你的图片文件夹复制到位于你机器目的地某处的图像文件夹
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")
我正在尝试仅将某些文件从一个文件夹复制到另一个文件夹。文件名位于 shapefile 的属性 table 中。
我成功地将文件名写入 .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'])
给定文件名
columns['label']
您可以使用以下方法移动文件
srcpath = os.path.join(src, columns['label'])
dstpath = os.path.join(dst, columns['label'])
shutil.copyfile(srcpath, dstpath)
这是我用来解决问题的脚本:
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()
这样想源和目标
假设你想将文件从你的图片文件夹复制到位于你机器目的地某处的图像文件夹
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")