将文本附加到文件。将文本添加到指定的txt文件。

时间:2017-11-21 17:08:31

标签: python python-3.x append argparse

我试图将文本添加到来自-a开关的配置文件中。 其余代码确实有效,但不确定是谁调用select配置文件并编写新文件备份到其中。

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

我出错的任何想法?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

错误中存在问题:

add_to_file() takes 0 positional arguments but 1 was given

add_to_file没有采取任何行动,但你将其传递给它。

编辑:这里有一些问题,但我原来的答案是你的直接障碍:

  1. f.write不返回任何内容,无需分配。
  2. 您永远不会在read_config中关闭该文件。
  3. 要附加到该文件,您需要使用a模式打开它,如下所示:open('configfile', 'a')而不是r模式
  4. 你在你的except块中过度缩进。我甚至不确定**会做什么。你可能应该让它加注。
  5. 我不完全确定代码在这里要完成的是什么。看起来read_config将读取文件列表,然后将它们复制到dest。我明白了。但那么add_to_file做了什么?在配置中添加更多文件,这些文件将在随后的read_config运行中复制?
  6. 对于#2,请考虑使用上下文管理器。它将处理为您关闭文件。它看起来像这样:

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

    上述示例将处理打开和关闭文件,即使存在例外情况。