我有一个tsv文件列表,我希望获取所有文件的列标题。
with open(os.path.abspath('reference/file.tsv'), 'rU') as file:
reader = csv.reader(file)
row1 = next(reader)
目前,此代码段仅读取1个文件,其中包含需要解析的文件列表。
dir_path = os.path.abspath('reference/')
files = os.listdir(dir_path)
files
中列出了文件的名称。如何遍历文件列表并仅获取每个文件的列标题?
答案 0 :(得分:1)
代码中的files
变量是reference
文件夹的内容,表示文件夹的所有文件和子文件夹。它们在字符串列表中返回,仅包含文件或子文件夹名称。这意味着您必须自己为路径添加前缀。
示例:
dir_path = os.path.abspath('reference/')
files = os.listdir(dir_path)
for file in files:
# Skip non-files
if not os.path.isfile(file):
continue
with open(os.path.join(dir_path, file), 'rU') as f:
reader = csv.reader(f)
row1 = next(reader)
使用pathlib
模块的替代方案:
for file in Path('reference/').glob('*'):
if not file.is_file():
continue
with open(str(file.resolve()), 'rU') as f:
reader = csv.reader(f)
row1 = next(reader)
在阅读每个文件的第一行,将它们附加到列表然后将它们传递给csvreader
时,您最好不会更好吗?
示例:
lines = []
with open(str(file.resolve()), 'rU') as f:
lines.append(f.readline())
reader = csv.reader(lines)
for row in reader:
# whatever you want to do with the parsed lines
答案 1 :(得分:1)
我试试这个并且有效。
import os
import csv
dir_path = os.path.abspath('reference/')
files = os.listdir(dir_path)
for f in files:
with open(dir_path +'/'+f, 'rU') as file:
reader = csv.reader(file)
row1 = next(reader)
print row1