使用Python更改文本文件中的列表

时间:2014-05-19 16:16:21

标签: python list parsing

我是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;

感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

所以这就是我的建议:

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

    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,因为您忘记关闭文件而导致错误的可能性要小得多。所以,

    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"
    

    现在,这当然是一个愚蠢的例子,但是这个功能有很大的灵活性。格式化语法甚至有mini-language个整数!你可以将它用于表格,产生奇特的输出或各种各样的东西。

答案 1 :(得分:0)

你应该包括你到目前为止所做的代码,既然你还没有这样做,我不会给你完整的代码,而是你自己做的所需的工具和技能。

好的,问题1.打开文本文件。当我们这样做时,我们有几种方法可以打开文件,如read,write,append,readwrite。如果您想要完整列表,可以看到它here。对于我们的工作,我们需要读取和写入文件。所以我们想要Readwrite或(如果你看看你的桌子)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')

这应该这样做,尽管你可能想要以不同的方式打开文件。例如,通过执行with open('yourfile.txt','r')打开一个文件并打开包含要读取的国家/地区的文件。然后,使用with open('newfile.txt','w')创建一个新文件,然后将它们写入此文件!玩转!希望我帮忙!