2017-04-14 87 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") 
相關問題