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