下面的函数解析一个目录中的多个csv文件,并使用str.startwith()取出值。
使用'firstline.startswith('TrakPro')'和' txt.startswith('Serial')
'可以找到它。但是,当我添加第三个str.startwith(),即txt2.startswith('Test')时,没有任何输出,没有错误,似乎忽略了它。我需要做什么改变?基本上我想在for循环中添加多个str.startwith(),在':“后面拉出各种关键字。
def get_csv_file_list(root):
for r, d, f in os.walk(root):
for file in f:
if file.endswith('.csv'):
path = os.path.join(r, file)
dir_name = path.split(os.path.sep)[-2]
file_name = os.path.basename(file)
try:
with open(path) as k:
firstline = k.readline()
if firstline.startswith('TrakPro'):
file_list.append(path)
file_list.append(dir_name)
file_list.append(file_name)
txt = 'Serial Number:'
if txt.startswith('Serial'):
for row in list(k)[3:4]:
file_list.append(row[15:26])
txt2 = 'Test Name:'
if txt2.startswith('Test'):
for rows in list(k)[4:5]:
print(rows)
file_list.append(row[11:])
csv如下所示:
TrakPro Version 5.2.0.0 ASCII Data File
Instrument Name:,SidePak
Model Number:,TK0W02
Serial Number:,120k2136005
Test Name:,13270
Start Date:,04/17/2021
Start Time:,01:53:29
Duration (dd:hh:mm:ss):,00:07:13:00
Log Interval (mm:ss):,01:00
Number of points:,433
Description:,
到目前为止,我已经尝试了上面的代码,我希望打印出csv示例的“测试名称”行中的值。该函数没有打印出任何内容,没有错误。
标记
2条答案
按热度按时间lsmd5eda1#
要只打印以
Test Name:
开头的行的值,可以使用以下代码:印刷品:
kqlmhetl2#
正如我在评论中所说的,你是在消费
k
。要查看发生了什么,请运行以下命令:
其中abc.csv的内容为:
结果应该是: