我是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;
感谢任何帮助。谢谢!
答案 0 :(得分:0)
所以这就是我的建议:
with
结构format()
函数将文件1的内容写入预设字符串,然后写入文件2 所以代码元素看起来像这样:
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')
创建一个新文件,然后将它们写入此文件!玩转!希望我帮忙!