2017-11-21 24 views
1

-aスイッチから設定ファイルにテキストを追加しようとしています。 コードの残りの部分は動作しますが、select configファイルを呼び出す人とそのファイルにバックアップする新しいファイルを書き込む人が不明です。私はこれを実行するとファイルにテキストを追加します。指定されたtxtファイルにテキストを追加します。

parser = argparse.ArgumentParser(description='Copy multiple Files from a specified data file') 
parser.add_argument('-c', '--configfile', default="config.dat", help='file to read the config from') 
parser.add_argument('-l', '--location', default="/home/admin/Documents/backup/",help='Choose location to store files') 
parser.add_argument('-a', '--addfile', help='Choose a file to add to list') 

def read_config(data): 
    try: 
     dest = '/home/admin/Documents/backup/' 
     # Read in date from config.dat 
     data = open(data) 
     # Interate through list of files '\n' 
     filelist = data.read().split('\n') 
     # Copy through interated list and strip white spaces and empty lines 
     for file in filelist: 
      if file: 
       shutil.copy(file.strip(), dest) 
    except FileNotFoundError: 
     logger.error("Config file not found") 
     print ("Config File not found") 

def add_to_file(): 
    try: 
     f = open('configfile','r') 
     f.read() 
     addto = f.write('addfile') 
     f.close() 
    except FileNotFoundError: 
      pass** 
args = vars(parser.parse_args()) 
read = read_config(args['configfile']) 
add = add_to_file(args['addfile']) 

私は、次のようなエラーが表示されます。

add = add_to_file(args['addfile']) 
TypeError: add_to_file() takes 0 positional arguments but 1 was given 

私はこれで間違っているつもり任意のアイデア?任意のヘルプ

答えて

2

ため

おかげエラーはそれで問題があります。

add_to_file() takes 0 positional arguments but 1 was given 

add_to_fileは、任意の引数を取りませんが、あなたはそれを1つずつ渡しています。

編集:ここで間違っていくつかありますが、私のオリジナルの答えはあなたの直接のハードルです:

  1. f.writeはそれを割り当てる必要はありません、何も返しません。
  2. read_configでファイルを閉じることはありません。ファイルに追加するには
  3. 、あなたはこのように、aモードでそれを開く必要があります。open('configfile', 'a')の代わりrモード
  4. あなたは除くブロック内に過剰にインデントしています。また、私はパスが**何かを確認していない。あなたはたぶんそれを上げさせるべきでしょう。
  5. ここでコードが達成しようとしていることは完全にはわかりません。 read_configはファイルのリストを読み込んでdestにコピーするようです。私はそれを得る。しかし、それではadd_to_fileは何をするのですか? read_configの後続実行でコピーされるconfigにファイルを追加しますか?

#2の場合は、コンテキストマネージャの使用を検討してください。それはあなたのためにファイルを閉じる処理します。

with open('some_file.txt', 'r'): 
    do_some_stuff() 

上記のサンプルでは、​​例外があってもファイルの開閉が処理されます。

+0

ありがとうございました。 私は次のように変更: デフaddtofile(テスト): 試み:オープン( 'CONFIG.DAT'、 'A')との ファイルとして: file.write(テスト+ "\ n" は) FileNotFoundError除きます: logger.error( "エラーメッセージ") 引数の=のVARS(parser.parse_args()) 読み出し= read_config(引数[ 'configfileを']) 追加= addtofile(引数[ '追加']) shutil .SameFileError: 'backup/test.dat'と '/home/admin/Documents/backup/test.dat'は同じファイルです –

関連する問題