2016-12-06 8 views
0

プログラムは、in_file_nameの内容をout_file_nameにコピーする必要があります。これは私が持っているものですが、クラッシュし続けます。pythonで非テキストバイナリファイルの正確なコピーを作成する方法

in_file_name = input('Enter an existing file: ') 
out_file_name = input('Enter a new destination file: ') 

try: 
    in_file = open(in_file_name, 'r') 
except: 
    print('Cannot open file' + ' ' + in_file_name) 
    quit() 

size = 0 
result = in_file.read(100) 
while result!= '': 
    size += len(result) 
    result = in_file.read(100) 

print(size) 
in_file.close() 
try: 
    out_file = open(out_file_name, 'a') 
except: 
    print('Cannot open file' + ' ' + out_file_name) 
    quit() 

out_file.close() 
+0

? – Dekel

+0

「崩壊し続ける」ってどういう意味ですか?あなたの投稿を例外出力を含む完全な情報で更新してください。例外トレースは通常、正確な問題を指します。 – CAB

答えて

0

あなたは、この目的のためにshutilを使用することができます

from shutil import copyfile 
in_file_name = input('Enter an existing file: ') 
out_file_name = input('Enter a new destination file: ') 
try: 
    copyfile(in_file_name, out_file_name) 
except IOError: 
    print("Seems destination is not writable")  
0

あります2つのこと:

  1. これを(行うには良い方法は、標準ライブラリにshutil.copy、様々な他の機能を使用してのようにあります

  2. バイナリファイルの場合は、iを開きますtを "バイナリ"モードにします。とにかく


手動でそれをやってするこだわっている場合、ここでそれを行う方法です。

のstdライブラリ関数を使用して
orig_file = "first.dat" 
copy_file = "second.dat" 

with open(orig_file, "rb") as f1: 
    with open(copy_file, "wb") as f2: 
     # Copy byte by byte 
     byte = f1.read(1) 
     while byte != "": 
      f2.write(byte) 
      byte = f1.read(1) 

How do I copy a file in python?そのため `shutil.copy`を使用しない理由

+0

それは、質問をするときには、3つの部分があることを確認してください:手元にある作業の明確な説明、試したこと、そこにトレースバックのエラーの明確な説明。 – pradyunsg

関連する問題