2017-04-14 88 views
0

我需要创建一个文本文件来存储用户给出的一组问题的答案。该文件需要具有唯一的案例号作为其文件名。下面的代码确实除文件之外不是文本文件,其文件类型只是说“文件”。用变量创建文本文件作为文本文件的名称

文件需要将rnumber文件的内容作为文件名。这真的很重要。

有谁知道这可以做到吗?

def casenumberallocator(filename, answers, typeofdevice): 
    os.chdir("H:\V4 Program\Questions") 
    availablecasenumber = "not found" 
    while availablecasenumber == "not found": 
     rnumber = random.randint(1, 100) 
     if rnumber in randomnumberlog: 
      one = 1 
     else: 
      availablecasenumber = "found" 
      randomnumberlog.append(rnumber) 
    case = dict() 
    case[rnumber] = {"Case number": rnumber, 
       "Device": typeofdevice, 
       filename: answers} 
    casestring = ''.join('{}{}'.format(key, val) for key, val in case[rnumber].items()) 
    os.chdir("H:\V4 Program\Case_files") 
    with open(str(rnumber), "w") as file: 
    #I have also tried str(rnumber).txt, and str(rnumber)".txt" but neither works. 
     file.write(casestring) 
    os.chdir("H:\V4 Program") 
+0

你为什么不使用'再次str.format'? 'str(rnumber).txt'只是一个属性错误,因为它试图访问属性字符串显然没有。除了文件与特定的默认程序相关联外,文件扩展名也不重要;只需打开使用文本编辑器并观看。 – jonrsharpe

+0

请不要总是做这个多余的'chdir'。如果你想在不同的文件夹中打开一个文件,只需要在打开'open'文件时加上文件名。 – Matthias

回答

0

必须 “串联” ......

open('"'+str(rnumber)+'.txt"', "w") 

...我想...

+0

不需要这些额外的引号,除非你希望文件名本身包含引号。 – jkdev

0

感谢斯蒂法诺,你的答案稍有编辑的版本工作。

open(str(rnumber)+'.txt' 
0

您还可以使用字符串插值,它在插入字符串之前自动将值转换为字符串。

"{}.txt".format(rnumber) 

或者

"{}.{}".format(rnumber, "txt") 
相关问题