【问题标题】:how to use python sys.argv如何使用 python sys.argv
【发布时间】:2021-11-18 04:32:49
【问题描述】:

如何使用python sys.argv

我想将结果保留为我想要的文件名。

import pymssql
import csv
import sys

dbname = sys.argv[1]
conn = pymssql.connect(host='rds.amazonaws.com', user='asdf', password='asdf', database= dbname, charset='utf8')
curs = conn.cursor()
sql = "select * from usertable with(nolock);"
f = open('dbname_result.csv', 'w')
wr = csv.writer(f)
curs.execute(sql)
rows = curs.fetchall()

for row in rows:
    wr.writerow(row)
    
conn.commit()
conn.close()
f.close()

结果

python test.py userdb01  
-> dbname_result.csv

但我希望的结果...

python test.py userdb01  
-> userdb01_result.csv

【问题讨论】:

  • 您对sys.argv 的使用很好。如果您有 Python 3.6 或更高版本,则需要使用 f 字符串(格式化字符串)作为文件名:f = open(f'{dbname}_result.csv', 'w')
  • 我仍在使用 Python 2.7.16。但我会试试的。 @sj95126
  • 好的,那么你可以这样做:f = open(dbname + '_result.csv', 'w')
  • 您找到解决方案了吗?我在下面提供的那个对你有用吗?如果是这样,请标记答案或创建一个答案并标记它以供将来找到您的问题的人使用。

标签: python csv import argv


【解决方案1】:

正如评论中最低限度地描述的@sj95126,您没有将dbname 的值作为变量进行评估。您将其作为常量字符串值传递。

如果您使用的是 Python 3+,则可以按照所述使用 f-string...

f = open(f'{dbname}_result.csv', 'w')

如果您使用的是 Python 2 或 3,则可以使用多种方法,但如果我需要跨版本兼容,我更喜欢 str.format

f = open('{}_result.csv'.format(dbname), 'w')

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2022-01-08
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多