Python os.walk: 添加文件夹名称输出
Python os.walk: add folder names to output
我有以下脚本,效果很好,但现在我想将文件夹的名称添加到输出文件中。该脚本与 os.walk 一起进入当前工作文件夹的子目录,我想将子目录文件夹名称添加到输出中。最好,我只想将文件夹名称(而不是整个路径)添加到输出文件的第一行。谁能帮我修改脚本?
提前致谢!
import os
import csv
from itertools import chain
from collections import defaultdict
def get_file_values(find_files, output_name):
for root, dirs, files in os.walk(os.getcwd()):
if all(x in files for x in find_files):
outputs = []
for f in find_files:
d = {}
with open(os.path.join(root, f), 'r') as f1:
for line in f1:
ta = line.split()
d[ta[1]] = int(ta[0])
outputs.append(d)
d3 = defaultdict(list)
for k, v in chain(*(d.items() for d in outputs)):
d3[k].append(v)
with open(os.path.join(root, output_name), 'w+') as fnew:
writer = csv.writer(fnew)
for k, v in d3.items():
writer.writerow([k] + v)
get_file_values(['genes.gff.genespercontig.csv', 'hmmer.analyze.txt.results.txt'], 'output_contigsvsgenes.csv')
您可以使用 os.listdir(path)
获取所有子目录和文件名。
参见:https://docs.python.org/2/library/os.html
例如,os.listdir('.')
表示当前目录,os.listdir('../')
表示上一级目录。
os.path.relpath('.','..')
给出当前目录的文件夹名称。
我有以下脚本,效果很好,但现在我想将文件夹的名称添加到输出文件中。该脚本与 os.walk 一起进入当前工作文件夹的子目录,我想将子目录文件夹名称添加到输出中。最好,我只想将文件夹名称(而不是整个路径)添加到输出文件的第一行。谁能帮我修改脚本? 提前致谢!
import os
import csv
from itertools import chain
from collections import defaultdict
def get_file_values(find_files, output_name):
for root, dirs, files in os.walk(os.getcwd()):
if all(x in files for x in find_files):
outputs = []
for f in find_files:
d = {}
with open(os.path.join(root, f), 'r') as f1:
for line in f1:
ta = line.split()
d[ta[1]] = int(ta[0])
outputs.append(d)
d3 = defaultdict(list)
for k, v in chain(*(d.items() for d in outputs)):
d3[k].append(v)
with open(os.path.join(root, output_name), 'w+') as fnew:
writer = csv.writer(fnew)
for k, v in d3.items():
writer.writerow([k] + v)
get_file_values(['genes.gff.genespercontig.csv', 'hmmer.analyze.txt.results.txt'], 'output_contigsvsgenes.csv')
您可以使用 os.listdir(path)
获取所有子目录和文件名。
参见:https://docs.python.org/2/library/os.html
例如,os.listdir('.')
表示当前目录,os.listdir('../')
表示上一级目录。
os.path.relpath('.','..')
给出当前目录的文件夹名称。