python - Add Header row to multiple .txt files using -
python newbie hoping can little bit of help. have bunch of .txt files listing gps data. create python script open each .txt file in directory , add headers (prior converting .csv , processing esri gis feature classes). have python code list .txt files in target directory , have python code add headers single specified .txt file not sure how tie 2 bits of code whole script process .txt files
python code list .txt files:
import glob workspace = "c:\\pathway\\totarget" date = time.strftime('%y_%m_%d') directory = workspace + "\\" + date glob.glob(directory + "./*.txt")
so, if
import glob workspace = "c:\\pathway\\totarget" date = time.strftime('%y_%m_%d') directory = workspace + "\\" + date listoffiles = glob.glob(directory + "./*.txt") print listoffiles
i list of .txt files in target directory. far good.
================
python add header specified .txt file
listoffiles = "c:\\pathway\\to\\target_dir\\log - copy (2).txt" headers = "sent_id,time_utc,nav_warn,lat,n_s,long,e_w,speed,course,date,mag_var,,check".split() line in fileinput.input([listoffiles], inplace=true): if fileinput.isfirstline(): print '\t'.join(headers) print line,
this changes first line of specfied .txt file. good.
================
amalgamated code
however if this:
import glob import fileinput import os import time workspace = "c:\\pathway\\totarget" date = time.strftime('%y_%m_%d') directory = workspace + "\\" + date listoffiles = glob.glob(directory + "./*.txt") headers = "sent_id,time_utc,nav_warn,lat,n_s,long,e_w,speed,course,date,mag_var,,check".split() line in fileinput.input([listoffiles], inplace=true): if fileinput.isfirstline(): print '\t'.join(headers) print line,
the error is: typeerror: can concatenate list (not "str") list
message file name line position traceback <module> c:\users\pennychr\desktop\gps_2.py 58 next c:\python27\arcgis10.2\lib\fileinput.py 253 readline c:\python27\arcgis10.2\lib\fileinput.py 318 "typeerror: can concatenate list (not ""str"") list"
if can give me pointers correct way me work around issue, great.
it looks there error trying generate listoffiles
list using glob.glob()
. following previous concatenations create directory string, i'd suggest replacing line following:
listoffiles = glob.glob(directory + "\\*.txt")
and see if works. you've been using windows filepaths along, yet './*.txt'
unix-style "all files ending in .txt
in current directory." doesn't work in situation, because adds .
end of directory
before \\*.txt
part.
when debugging, it's extremely helpful either run through code line-by-line in idle, ipython, or utility, checking variable's values @ each step. alternatively, put in print
statement after every variable assignment check current value is, , ensure conforms think should be.
in addition above error, else caught eye:
headers = "sent_id,time_utc,nav_warn,lat,n_s,long,e_w,speed,course,date,mag_var,,check".split()
does not think does. string.split()
function, when not given arguments, splits on whitespace, not present in input. therefore, print '\t'.join(headers)
statement later on isn't doing except converting single-item list headers
string (with no tabs, btw). observe:
>>> "sent_id,time_utc,nav_warn,lat,n_s,long,e_w,speed,course,date,mag_var,,check".split() ['sent_id,time_utc,nav_warn,lat,n_s,long,e_w,speed,course,date,mag_var,,check']
it returns single-item list full string member. however, splitting on comma ,
yields:
>>> "sent_id,time_utc,nav_warn,lat,n_s,long,e_w,speed,course,date,mag_var,,check".split(',') ['sent_id', 'time_utc', 'nav_warn', 'lat', 'n_s', 'long', 'e_w', 'speed', 'course', 'date', 'mag_var', '', 'check']
which suspect trying for. yet reason checking variables , output.
Comments
Post a Comment