Unix像在python中使用变量

时间:2018-06-20 08:10:54

标签: python

我对Python还是很陌生,并尝试如下所述找出从文件中使用变量的方法。

我有一个文件query.txt

query1="select count(*) from table1;" 
query2="select count(*) from table2;" 

我的主程序:

conn=connect_db()
print >>log,"connection successful"
c=conn.cursor()
with open('query.txt') as fp:
     for line in fp:
         print line
         i=1
         query="query"+str(i)    #If I print query I get query1

#I am looking to pass query1 as argument, to execute first query
         c.execute(query); 
         r=c.fetchone()
         print r
         i+=1

在shell中,我将使用c.execute($ query)并将其替换为其分配的值。如何使用Python实现?

感谢您的帮助和指导。

2 个答案:

答案 0 :(得分:1)

query.txt更改为:

select count(*) from table1;
select count(*) from table2;

然后用Python:

for query in fp:
    c.execute(query)

答案 1 :(得分:0)

您可以使用sys库。 https://docs.python.org/2/library/sys.html?highlight=argv#sys.argv

  

传递给Python脚本的命令行参数列表。 argv [0]是脚本名称(是否为完整路径名取决于操作系统)。如果命令是使用解释器的-c命令行选项执行的,则argv [0]设置为字符串'-c'。如果没有脚本名称传递给Python解释器,则argv [0]为空字符串。

     

要遍历标准输入或命令行上提供的文件列表,请参阅fileinput模块。

Argv允许您在运行脚本时从命令行传递参数。可以在这里找到教程: https://www.tutorialspoint.com/python/python_command_line_arguments.htm

[编辑] 2个假设:

  1. 您正在使用python 2.7
  2. 您的脚本在以下位置运行命令行 Linux。

不说它不能正常工作,但这是我所知道的。

[EDIT2] Alex Hall的答案实际上是OP所需要的,因此请专注于那个。