我必須編寫一個程序,該程序接受兩個文件名作爲用戶輸入:源文件名和目標文件名。然後,我必須編寫一個函數,將源文件的內容複製到目標文件中。Python程序將內容從源文件傳輸到目標文件
程序應該能夠處理任何大小和類型的文件(甚至像PDF/PNG等二進制格式)。
我必須編寫一個程序,該程序接受兩個文件名作爲用戶輸入:源文件名和目標文件名。然後,我必須編寫一個函數,將源文件的內容複製到目標文件中。Python程序將內容從源文件傳輸到目標文件
程序應該能夠處理任何大小和類型的文件(甚至像PDF/PNG等二進制格式)。
要做到這一點,你將不得不考慮任何類型的文件是由字節「製造」。您必須從文件讀取字節,然後將此字節複製到另一個文件。
你可以採取命令方式:
# program.py
import sys
# Take second and third elements from the arguments array (first one is 'program.py' itself)
sourceFileName = sys.argv[1]
destFileName = sys.argv[2]
# Open file 'sourceFileName' for reading as binary
sourceFile = open(sourceFileName, "rb")
data = sourceFile.read()
sourceFile.close()
# Open (or create if does not exists) file 'destFileName' for writing as binary
destFile = open(destFileName, "wb")
destFile.write(data)
destFile.close()
在這種情況下,你會通過源和目標文件名作爲第一個和第二個參數,分別在命令行中,就像這樣:
$ python test.py oneFile.txt anotherFile.txt
注意onFile.txt
應該存在和anotherFile.txt
可能會或可能不存在(如果不是,它會創建)
你也可以採取功能的方法:
# program.py
def copyFile(sourceFileName, destFileName):
# Open file 'sourceFileName' for reading as binary
sourceFile = open(sourceFileName, "rb")
data = sourceFile.read()
sourceFile.close()
# Open (or create if does not exists) file 'destFileName' for writing as binary
destFile = open(destFileName, "wb")
destFile.write(data)
destFile.close()
print("Done!")
# Ask for file names
src = raw_input("Type the source file name:\n")
dst = raw_input("Type the destination file name:\n")
# Call copyFile function
copyFile(src, dst)
你應該考慮添加一種方法來檢查源文件是否存在之前打開。您可以使用os.path.isfile(fileName)
函數來完成此操作。
希望它有幫助!
這真的很清楚,有幫助!謝謝 –
@SamithKumar不客氣!如果它幫助你,請選擇我的答案作爲對問題的回答。 –
該解決方案有一些缺點。如果有一個大文件,假設爲100GB,它會嘗試一次讀取整個文件並將其加載到主內存。 主內存一次不能處理這個巨大的文件,因爲它們通常是8gb到16gb的順序。 你能否給我一個更好的答案,我們可以找出文件的總大小,然後一次複製大塊文件? –
謝謝你給我們做作業,但是SO不適合它。嘗試一下,如果沒有成功,請告訴我們您的代碼,我們會盡力幫助您。 – MarianD
明白了!將繼續銘記此後:) –