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

时间:2015-10-14 12:29:19

标签: python filenames user-input

我正在尝试调整当前包含以下段的脚本:

#  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”和“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”开头的语句的其余部分连接时,我收到语法错误。

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

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

2 个答案:

答案 0 :(得分:0)

不确定您的问题究竟是什么,但如果您想用其他内容替换{0}部分(例如data_file中的值),则可以file_name.format(data_file)。< / p>

答案 1 :(得分:0)

为什么不将join()方法用于字符串,而os.path.join()用于paht? e.g。

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

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