从用户输入创建复杂的文件名



我正试图适应一个脚本,目前包含以下部分:

#  Initialize the output files
working_dir = os.getcwd()
output_path = "{}/{}".format(working_dir, "output_Prelim")
if not os.path.exists(output_path):
    os.mkdir(output_path)
data_file = "{0}/RWA_2010_BUFFER_by_1.csv".format(output_path)
error_file = "{0}/failed_queries.txt".format(output_path)

在以"data_file"开头的语句中,文件名"RWA"one_answers"2010"的部分表示进行特定调查的国家和年份。

我正在尝试调整该段,以便文件名保留相同的通用格式,但允许用户输入不同的国家代码和年份。

我可以生成一个看起来正确的名为"file_name"的字符串,使用以下代码:

print('Enter the country code')
cCode =input()
print('The country code is '+cCode)
print('Enter the survey year')
srvyYear =input()
print('The survey year is '+srvyYear)
file_name = r'"{0}/'+cCode+'_'+srvyYear+'_'+'BUFFER300_by_1.csv"'

当我打印" file_name "时,我得到

"{0}/BDI_2009_BUFFER300_by_1.csv"

这看起来是对的,但我不知道该怎么处理它-特别是,如何让它理解为一个文件名,而不是一个字符串。当我尝试将该字符串与以"data_file"开头的语句的其余部分连接起来时,会出现语法错误。

显然我需要做一个教程,但我不知道该找什么。

非常感谢,并为新手问题道歉。

不确定你的问题到底是什么,但如果你想用其他东西代替{0}部分(例如data_file中的值),你可以只做file_name.format(data_file)

为什么不使用join()方法的字符串和os.path.join()的路径?例如

file_name = os.path.join(out_path, '_'.join([cCode, srvyYear, 'BUFFER300_by_1.csv']))

你可以在这里看到它的文档,我相信这是你需要的,你最好不要自己连接字符串来构造路径或文件名。顺便说一下,os.path.join()可以在没有平台依赖的情况下构造文件名,这将是一个明智的选择(特别是对于Windows)。

最新更新