用Python修改文本文件中的列表

用Python修改文本文件中的列表,python,list,parsing,Python,List,Parsing,我是Python的新手,正在尝试更改文本文件中的列表。我正在从Oracle获取一个列表,希望将信息添加到列表中,以便将其粘贴到脚本中。我想: 1.打开文本文件 2.对于文本文件中的每一行,将其与其他一些文本连接起来 3.重写文本文件(或创建一个新文件)以包含新修改的行 即: 如果我的列表中有以下行: -NorthAmerica -SouthAmerica -Asia 我想重写列表,并将此文本与之连接: GRANT SELECT ON GEODATA. + line + TO GEO

我是Python的新手,正在尝试更改文本文件中的列表。我正在从Oracle获取一个列表,希望将信息添加到列表中,以便将其粘贴到脚本中。我想: 1.打开文本文件 2.对于文本文件中的每一行,将其与其他一些文本连接起来 3.重写文本文件(或创建一个新文件)以包含新修改的行

即: 如果我的列表中有以下行:

  -NorthAmerica
  -SouthAmerica
  -Asia
我想重写列表,并将此文本与之连接:

GRANT SELECT ON GEODATA. + line + TO GEO_VIEWER;
所以最终看起来是这样的:

GRANT SELECT ON GEODATA.NorthAmerica TO GEO_VIEWER;
GRANT SELECT ON GEODATA.SouthAmierica TO GEO_VIEWER;
GRANT SELECT ON GEODATA.Asia to GEO_VIEWER;
with open("file_to_be_read.txt", 'r') as fread, open("file_to_be_written.txt", 'w') as fwrite:
    for line in fread:
        fwrite.write("GRANT SELECT ON GEODATA.{} TO GEO_VIEWER;\n".format(line[1:]))

感谢您的帮助。谢谢大家!

所以我建议您:

  • 使用带有结构的
    打开这两个文件
  • 使用
    format()
    函数将文件1的内容写入预设字符串,然后写入文件2
  • 所以代码元素看起来像这样:

    GRANT SELECT ON GEODATA.NorthAmerica TO GEO_VIEWER;
    GRANT SELECT ON GEODATA.SouthAmierica TO GEO_VIEWER;
    GRANT SELECT ON GEODATA.Asia to GEO_VIEWER;
    
    with open("file_to_be_read.txt", 'r') as fread, open("file_to_be_written.txt", 'w') as fwrite:
        for line in fread:
            fwrite.write("GRANT SELECT ON GEODATA.{} TO GEO_VIEWER;\n".format(line[1:]))
    
    您可能需要稍微调整
    format()
    函数,以获得您想要的内容。现在,除了第一个字符,它只执行整行的
    fread

    既然你是新手,这里有一些更深入的解释:

    使用
    结构的
    在处理文件时非常有用,因为它可以处理关闭和其他一些事情。这意味着使用
    with
    ,由于忘记关闭文件而导致错误的可能性要小得多。所以

    with open("file.txt") as f:
        #Do stuff
    
    相当于,

    f = open("file.txt")
    #Do stuff
    f.close()
    
    除了使代码不易出错外,它还提高了可读性

    format()
    函数是在Python中处理字符串的一个非常有用(而且有点神秘)的工具。简短的版本是,应用了
    format()
    的字符串中的任何
    {}
    都被函数的参数填充。所以

    print "Hello, my name is {}".format("Dave")
    
    产生

    "Hello, my name is Dave"
    

    当然,这是一个愚蠢的例子,但是函数中有很大的灵活性。甚至还有一个完整的格式语法!您可以将其用于表格、生成奇特的输出或各种事情。

    您应该包括到目前为止您已经完成的代码,因为您还没有完成这项工作,所以我不会给您完整的代码,而是您自己完成这项工作所需的工具和技能

    好的,问题1。打开一个文本文件。当我们这样做时,我们有几种方法可以打开文件,比如读、写、附加、读写。如果你想要完整的列表,你可以看到它。对于我们的工作,我们需要读写文件。因此,我们需要读写或(如果您查看表格)
    r+
    。首先,让我们这样做

    with open('your_file_name.txt','r+') as file: 
    
    所以我们打开了我们的文件。现在怎么办

    我们接下来需要读取该文件。多亏了Pyhton的优秀开发人员,我们使用了一个命名非常简单的函数:
    .read()
    。因此,我们将文件打开并保存在变量
    file
    中。让我们读一读

        countries = file.readlines()
    
    但是等等,我听到你问,你说的是
    read
    ,你用的是
    readlines
    。这是因为如果我们使用
    read
    ,我们将得到一个简单的字符串,但是
    readlines
    将返回一个列表,我们可以循环浏览。好的,我们有一个需要写回文件的字符串列表。那么,让我们这样做。令人惊讶的是,我们有一个名为
    write的简单命名函数。

        for country in countries: #Loop through all the countries we just read
            file.write('GRANT SELECT ON GEODATA. ' + country + ' TO GEO_VIEWER')
    

    这应该可以做到,尽管您可能希望以不同的方式打开文件。例如,使用open('yourfile.txt','r')
    打开一个文件,然后打开包含要读取的国家的文件。然后,使用open('newfile.txt','w')创建一个新文件,然后将它们写入该文件!玩吧!希望我能帮忙

    到目前为止什么都没有。。。我在谷歌上搜索了很多,但是找不到任何和我想做的事情类似的东西。。。这似乎很简单。。我甚至不知道如何打开文本文件,以使我可以通过for循环遍历每一行…@Strider