The below function parses multiple csv files in a directory and takes out values using str.startwith().
It works find using 'firstline.startswith('TrakPro')' and 'txt.startswith('Serial')
'. However, when I add a third str.startwith() i.e. txt2.startswith('Test'), nothing prints out, no error, appears to ignore it. What do I need to change? Basically I want to add multiple str.startwith() in the for loop pulling out various key words after the ':".
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:])
The csv looks like this:
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:,
So far I have tried the above code, I expected to print out values in the 'Test Name' line of the csv sample. The function does not print out anything, no error.
Tks
CodePudding user response:
To print only the value of the line that starts with Test Name:
you can use following code:
with open("your_file.csv", "r") as f_in:
for line in map(str.strip, f_in):
if line.startswith("Test Name:"):
_, value = line.split(",", maxsplit=1)
print(value)
Prints:
13270