2012-03-07 52 views
1

我想要在Python中做的是製作一個程序,您可以直接從命令行寫入文件。我有所有的代碼來做到這一點,但唯一相關的代碼如下。文件命名,Python

aw = input("Do you want to append your text file, or rewrite the whole thing? (append/write) ") 
if aw == 'append': 
    textin = input("In the line below, write the text you want to put into your text document!\n\n") 
    outfile = open('mytext.txt', 'a') 
    outfile.write(textin) 

我所要做的是讓這樣的人可以選擇文件名,但是當我做輸入功能,name = input("Choose your filename, don't include an extension: ")和變線4成outfile = open(name, 'txt', 'a'),我得到一個語法錯誤!

+2

您可能打算連接名稱,如'open(name +'.txt','a')'。你擁有它的方式會是一個問題,因爲'「txt」'會被解釋爲'open()'的模式參數。 – birryree 2012-03-07 21:54:45

+0

@birryree:請添加您的評論作爲答案。 – Philipp 2012-03-07 21:56:10

+0

好吧,我的評論可能已經發現了一個不同的問題,但是你的語法錯誤可能是其他問題 - 你可以更新以向我們展示當你嘗試改變'outfile'行時你的代碼是什麼樣的? – birryree 2012-03-07 22:07:43

回答

2

試試這個:outfile = open(name + '.txt', 'a')

Python不能串聯那樣的字符串等被處理open(name, 'txt', 'a')與三個參數的函數調用。不幸的是,open函數只需要兩個。

編輯:如果這是Python 2.x代碼,那麼您也正在使用input函數不正確。根據the documentation的輸入功能要求用戶輸入有效的python代碼,您正在查找raw_input function

如果這是Python 3.x代碼,那麼正確的功能是input和我的道歉。

+0

此外,語法錯誤可能是由於錯誤的縮進或缺失大括號或某物。 – 2012-03-07 21:58:49

+0

我剛剛意識到這是因爲'input'需要用戶鍵入有效的Python。編輯我的答案。 – 2012-03-07 22:01:47

+1

如果是Python 3,'input()'是正確的函數。如果它是Python 2,'raw_input()'將是正確的選擇。 – 2012-03-07 22:02:55