2016-07-06 70 views
1

所以我在這一章及另一篇文章教我如何代碼降低到一個更精簡版學習Python的,艱辛的道路,前17,我得到了一個襯墊,但

from sys import argv 

from os.path import exists 

script, from_file, to_file = argv 

(open(to_file, 'w').write(open(from_file).read())) 

我的問題第6行是爲什麼不能我用同樣的格式,open(to_file,'w')用途,一部分,說:open(from_file).read()

我可以使用類似像open(from_file, 'r')東西在代碼的一部分?爲什麼或者爲什麼不?

+0

你問:open(something,'r')和open(something,「w」)是什麼區別?您的問題描述**非常**不清楚。 –

+0

您是否收到錯誤訊息?這對我來說工作得很好。 'open(to_file,'w')。write(open(from_file,'r')。read())'注意,我在所讀取的文件中加入了'r'。 – Will

+0

@我的意思是完全取出「.read」部分,並用open(from_file)旁邊的'r'替換它:open(from_file,'r')。我想一個更好的問題是,爲什麼.read部分甚至必要,如果它已經是打開(from_file)下的默認選項?如果有必要的話。 – dubg

回答

0

如果你指的open()文檔,開放模式可選,默認爲只讀:https://docs.python.org/2/library/functions.html#open

開放(名稱[,模式[,緩衝])

[ ...] 最常用的模式值是'r'讀取,'w'寫入(截斷文件,如果它已經存在)和'a'附加(在某些Unix系統上這意味着所有寫入追加到文件的末尾,而不管當前的搜索位置)。如果省略模式,則默認爲'r'。

所以,你可以使用只讀標誌,但沒有義務這樣做,open(file, 'r')相當於open(file)

+0

謝謝你的時間。那麼,爲什麼在這部分代碼中.read部分是必需的?在問到讀再from_file?: 開放(from_file,「R」)。閱讀())) – dubg

+0

@ Xander的,我想我得到它,所以基本上,open()函數告訴編譯器切換到模式'r',w或a。那麼,代碼的.read部分就是模式的實際執行? – dubg

+0

@dubg沒有編譯un python,而是一個在執行時讀取代碼的解釋器。 'open()'函數只是獲得一個遊標來解析文件。 'read()'使用這個光標來實際讀取文件的內容。 – Xander

0

可以。

(open(to_file, 'w').write(open(from_file, "r").read())) 

是否有效,並應該工作相同。

open()中的訪問模式是可選的,如documentation中所述。未指定時,將爲您添加「r」。引用如下。

access_mode:access_mode確定文件必須打開的模式,即讀,寫,追加等。下表中給出了可能值的完整列表。這是可選參數,讀取默認文件訪問模式(r)。

要進一步突破這條線時,open()功能基本上打開文件,並返回一個file對象類型。然後你把這個返回的文件類型並立即調用它的write()函數。此函數需要一個字符串,您使用open(from_file, "r").read()提供。這將讀取整個文件並返回一個字符串。因此,最終它會打開一個文件並寫入另一個文件的內容。