0

I am a somewhat Python/programing newbie, and I am attempting to use a python class for the first time.

In this code I am trying to create a script to backup some files. I have 6 files in total that I want to back up regularly with this script so I thought that I would try and use the python Class to save me writing things out 6 times, and also to get practice using Classes.

In my code below I have things set up for just creating 1 instance of a class for now to test things. However, I have hit a snag. I can't seem to use the operator to assign the original filename and the back-up filename.

Is it not possible to use the operator for a filename when opening a file? Or am I doing things wrong.

class Back_up(object):
    def __init__(self, file_name, back_up_file):
        self.file_name = file_name
        self.back_up_file = back_up_file
        print "I %s and me %s" % (self.file_name, self.back_up_file)

        with open('%s.txt', 'r') as f, open('{}.txt', 'w') as f2 % (self.file_name, self.back_up_file):
            f_read = read(f)
            f2.write(f_read)

first_back_up = Back_up("syn1_ready", "syn1_backup")

Also, line #7 is really long, any tips on how to shorten it are appreciated.

Thanks Darren

4

2 に答える 2

2

シンプルさを試してみてください:)

7行目は解析されません。中間変数を使用して分割します。

source_fname = "%s.txt" % self.file_name
target_fname = "%s.txt" % self.back_up_file
with open(source_fname) as source, open(target_fname) as target:
  # do your thing

また、操作するファイルが2 つfile_nameある場合は、 のように一貫性がなく、過度に一般的な属性名を避けるようにしてください。

コピー ルーチンもあまり効率的ではありません。ファイル全体をメモリに読み込んでから、書き込もうとします。私があなただったらrsync、または同様の方法で電話をかけpopen()、操作するファイルの適切なリストをフィードします。bashPythonも問題ないかもしれませんが、おそらく私はそのために使用します。

于 2013-11-13T02:30:11.903 に答える