【发布时间】:2015-01-07 13:12:58
【问题描述】:
我有两个 csv 文件。
文件 1 的文件路径、组、权限如下所示
/path/eds/aws/file1.dat,dp_card,640
/path/eds/aws/file2.dat,dp_card,600
/path/edh/vs/file1.dat,dp_card,640
/pth/edw/de/file1.dat,pdp_card,640
/pth/edn/de/file1.dat,pdp_card,640
具有目录路径、组、批处理所有者的文件 2,如下所示
/path/eds/aws/,dp_card,dp_batchown
/path/edh/vs/,dp_card,dp_batchown
/path/edw/de/,pdp_card,dp_batchown
我想根据 file2 中存在的路径比较两个文件。如果文件 1 中存在路径,我想将文件名、组、权限、路径、组写入另一个文件。
样本输出:
文件 3
/path/eds/aws/file1.dat,dp_card,640,/path/eds/aws/,dp_card
/path/eds/aws/file2.dat,dp_card,600,/path/eds/aws/,dp_card
/path/edh/vs/file1.dat,dp_card,640,/path/edh/vs/,dp_card
/pth/edw/de/file1.dat,pdp_card,640,/path/edw/de/,dp_card
有人可以帮我编写上述代码吗?我从昨天开始尝试。
到目前为止我写的代码。
#!/usr/bin/python
import csv
import os.path
csv_dialect = dict(delimiter=',', quotechar='|')
path = set()
with open('hdfs','rb') as file_a :
reader1 = csv.reader(file_a, **csv_dialect)
next(reader1)
for row in reader1:
dirpath = os.path.dirname(row[0])
#absp = abspath[:-1]
path.add(dirpath)
#print(abspath)
with open('file2', 'ab') as file_c:
writer = csv.writer(file_c, **csv_dialect)
with open('lake.csv', 'rb') as file_b:
reader2 = csv.reader(file_b, **csv_dialect)
next(reader2)
for row in reader2:
dirpath1 = os.path.dirname(row[0])
#print(dirpath1)
if (dirpath1) in path:
writer.writerow(row)
#print(row)
【问题讨论】:
-
到目前为止你尝试过什么?没有人愿意为您创建完整的解决方案。证明您已为解决问题做出了一些努力。
-
您可以考虑使用pandas module 来完成这项任务。