2017-03-13 63 views
-2

我必須編寫一個程序,該程序接受兩個文件名作爲用戶輸入:源文件名和目標文件名。然後,我必須編寫一個函數,將源文件的內容複製到目標文件中。Python程序將內容從源文件傳輸到目標文件

程序應該能夠處理任何大小和類型的文件(甚至像PDF/PNG等二進制格式)。

+0

謝謝你給我們做作業,但是SO不適合它。嘗試一下,如果沒有成功,請告訴我們您的代碼,我們會盡力幫助您。 – MarianD

+0

明白了!將繼續銘記此後:) –

回答

0

要做到這一點,你將不得不考慮任何類型的文件是由字節「製造」。您必須從文件讀取字節,然後將此字節複製到另一個文件。

你可以採取命令方式:

# 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)函數來完成此操作。

希望它有幫助!

+0

這真的很清楚,有幫助!謝謝 –

+0

@SamithKumar不客氣!如果它幫助你,請選擇我的答案作爲對問題的回答。 –

+0

該解決方案有一些缺點。如果有一個大文件,假設爲100GB,它會嘗試一次讀取整個文件並將其加載到主內存。 主內存一次不能處理這個巨大的文件,因爲它們通常是8gb到16gb的順序。 你能否給我一個更好的答案,我們可以找出文件的總大小,然後一次複製大塊文件? –

相關問題