我最初一直在尝试创建一个程序来遍历一个文件并选择某些列,然后将这些列移动到一个新的文本文件中。到目前为止我有
import os, sys, csv
os.chdir("C://Users//nelsonj//Desktop//Master_Project")
with open('CHS_2009_test.txt', "rb") as sitefile:
reader = csv.reader(sitefile, delimiter=',')
pref_cols = [0,1,2,4,6,8,10,12,14,18,20,22,24,26,30,34,36,40]
for row in reader:
new_cols = list(row[i] for i in pref_cols)
print new_cols
我一直在尝试使用 csv 函数来编写新文件,但我不断收到错误。我最终需要在一个文件文件夹上执行此操作,但我想在解决这个问题之前我会尝试在一个文件夹上执行此操作。
我试图用来将此数据写入新文件的代码
for row in reader:
with open("CHS_2009_edit.txt", 'w') as file:
new_cols = list(row[i] for i in pref_cols)
newfile = csv.writer(file)
newfile.writerows(new_cols)
这种工作方式是我得到一个新文件,但只打印来自我的 csv 的第二行值,即不打印标题值,并在每个单独的字符之间放置逗号,而不仅仅是复制原始列.
我正在使用 PythonWin 和 Python 2.6(来自 ArcGIS)
谢谢您的帮助!
新更新的代码
import os, sys, csv
path = ('C://Users//nelsonj//Desktop//Master_Project')
for filename in os.listdir(path):
pref_cols = [0,1,2,4,6,8,10,12,14,18,20,22,24,26,30,34,36,40]
with open(filename, "rb") as sitefile:
with open(filename.rsplit('.',1)[0] + "_Master.txt", 'w') as output_file:
reader = csv.reader(sitefile, delimiter=',')
writer = csv.writer(output_file)
for row in reader:
new_row = list(row[i] for i in pref_cols)
writer.writerow(new_row)
print new_row
使 new_row 的列表索引超出范围,但它似乎仍在处理该文件。我现在唯一不能做的就是遍历我目录中的所有文件。这是 数据文本文件截图的超链接