【发布时间】:2019-07-18 05:16:52
【问题描述】:
不同文件夹和子文件夹中的csv 文件很少。我需要将每个 csv 文件与传入和传出流量分开。
如果来源 == ac:37:43:9b:92:24 && 接收者地址 == 8c:15:c7:3a:d0:1a 然后这些行需要写入 .out.csv 文件。
如果发送器地址 == 8c:15:c7:3a:d0:1a && 目的地== ac:37:43:9b:92:24 然后这些行需要写入 .in.csv 文件。
输出文件(被分隔为传入和传出的文件)必须与输入文件具有相同的名称(例如:如果输入文件是 aaa.csv,那么输出文件将是 aaa.in.csv 和 aaa.out。 .csv)。
输出文件需要像输入文件一样写入文件夹和子文件夹。 我尝试了以下代码,但无法正常工作。 我是编程新手,所以不确定这段代码是对还是错。任何帮助是极大的赞赏。谢谢
import csv
import os
import subprocess
startdir = '.'
outdir = '.'
suffix = '.csv'
def decode_to_file(cmd, in_file, new_suffix):
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
fileName = outdir + '/' + in_file[len(startdir):-len(suffix)] + new_suffix
os.makedirs(os.path.dirname(fileName), exist_ok=True)
csv_writer = csv.writer(open(fileName, 'w'))
for line_bytes in proc.stdout:
line_str = line_bytes.decode('utf-8')
csv_writer.writerow(line_str.strip().split(','))
for root, dirs, files in os.walk(startdir):
for name in files:
if not name.endswith(suffix):
continue
in_file = os.path.join(root, name)
decode_to_file(
cmd= [if source== ac:37:43:9b:92:24 && Receiver address== 8c:15:c7:3a:d0:1a],
in_file=in_file,
new_suffix='.out.csv'
)
decode_to_file(
cmd= [if Transmitter address == 8c:15:c7:3a:d0:1a && Destination== ac:37:43:9b:92:24],
in_file=in_file,
new_suffix='.in.csv'
)
【问题讨论】:
标签: python python-3.x csv