当我在终端中写入日期时,我会像这样执行代码:
python code.py " date"
例如python code.py 2017-05-14
,但我有超过1500个日期。我已将它们保存在 file.txt 中。
但我不知道如何调整代码中的解析以恢复文件中的所有变量
if __name__ == '__main__':
parser = argparse.ArgumentParser()
with open(...) as f:
for line in f:
<do something with line>
parser.add_argument("date", help="date format YYYY-MM-DD", type=str)
parser.add_argument("--output", help="csv output filepath",type=str)
args = parser.parse_args()
region = {
'France':'France',
'ACA':'Grand-Est',
'ALP':'Nouvelle-Aquitaine',
'ARA':'Auvergne-Rhônes-Alpes',
'BFC':'Bourgogne-Franche-Comté',
'BRE':'Bretagne',
'CEN':'Centre-Val de Loire',
'IDF':'Ile-de-France',
'LRM':'Occitanie',
'NPP':'Hauts-de-France',
'NOR':'Normandie',
'PLO':'Pays-de-Loire',
'PAC':'PACA',
}
# french date format...
datefr = args.date[-2:] + '/' + args.date[5:7] + '/' + args.date[:4]
if args.output:
output = args.output
else:
output = 'eco2mix-' + args.date + '.csv'
# grab all regions...
df = [grab_params({'region':k,'date':datefr}) for k in region.keys()]
df = pd.concat(df)
assert len(df) == 96*len(region.keys())
# NOTE : patching malformed date...
df['Date'] = [i if '-' in i else i[-4:]+'-'+i[3:5]+'-'+i[:2] for i in df['Date']]
assert len(set(df.Date)) == 1
# NOTE : remove - empty values by NaN
df.replace(to_replace = '-', value = np.NaN, inplace=True)
df.replace(to_replace = 'ND', value = np.NaN, inplace=True)
df.to_csv(output,index = False, encoding = 'UTF8')
最佳答案
据我了解,您想要解析带有日期的文件并将每个日期正确地传递给您的脚本吗?您可以编写一个快速的 bash 脚本来执行此操作
while read p; do
python code.py $p
done <file.txt
您可以将其另存为 script.sh 文件并运行它以迭代文件中的每个日期
关于python - 从 python 中的文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44027437/