0

ユーザーが生成した入力 (raw_input) として取得されるファイルの拡張子を変更したいのですが、元のファイルを同じに保つ必要があるため、このプログラムは元のファイルの内容を出力ファイルにコピーします。

これは、同じことを目指す私のプログラムの一部です -

var = raw_input("Enterfile ")
fid = open(var)
import os
name, extension = os.path.splitext(var)
path = os.path.abspath(var)
outputfile = os.path.splitext(var)[0]+ '.asd'
print path
print var
print outputfile
fo = open(outputfile, 'w')
import shutil
shutil.copyfile(var, fo)
data = fo.read()
print data

エラーが返されました -

File "p.py", line 18, in <module>
    shutil.copyfile(var, fo)
  File "/usr/lib/python2.7/shutil.py", line 68, in copyfile
    if _samefile(src, dst):
  File "/usr/lib/python2.7/shutil.py", line 58, in _samefile
    return os.path.samefile(src, dst)
  File "/usr/lib/python2.7/posixpath.py", line 154, in samefile
    s2 = os.stat(f2)

プログラムの何が問題なのかわかりません。助けてください。また、これを行うより効率的な方法があります。前もって感謝します。

4

1 に答える 1

0

このメソッドは、ファイル記述子ではなくshutil.copyfile、ファイルで機能します。ファイルを開く必要はありません。また、ファイルオブジェクトをcopyfileメソッドに渡したくないことは間違いありません。

コードは次のようになります:(パラメーターの種類がわからない場合は、http://docs.python.org/2/library/shutil.htmlを確認してください)

import os.path
import shutil

input_filename = raw_input("Enterfile ")
base_name, extension = os.path.splitext(input_filename)
output_filename = base_name + '.asd'

shutil.copyfile(input_filename, output_filename)
于 2013-02-08T04:26:19.257 に答える