如何使用Python sys.argv自定义导出CSV文件的名称
解决方案
你当前代码里的文件名是写死的固定字符串'dbname_result.csv',没有调用从命令行获取的dbname变量,只需将文件名改为动态拼接即可实现需求,有以下几种实现方式:
- 方式1:使用f-string拼接(Python 3.6及以上版本推荐,可读性最高)
将代码中打开文件的行修改为:f = open(f'{dbname}_result.csv', 'w') - 方式2:使用字符串加法拼接
f = open(dbname + '_result.csv', 'w') - 方式3:使用format方法拼接
f = open('{}_result.csv'.format(dbname), 'w')
优化后的完整代码示例(可选)
推荐使用with上下文管理器自动处理资源释放,不需要手动调用close()方法,避免异常时资源泄漏:
import pymssql import csv import sys dbname = sys.argv[1] # 用with管理数据库连接,自动关闭 with pymssql.connect(host='rds.amazonaws.com', user='asdf', password='asdf', database=dbname, charset='utf8') as conn: with conn.cursor() as curs: sql = "select * from usertable with(nolock);" curs.execute(sql) rows = curs.fetchall() # 用with管理文件,自动关闭 with open(f'{dbname}_result.csv', 'w', newline='', encoding='utf-8') as f: wr = csv.writer(f) wr.writerows(rows)
补充说明:csv模块写入时建议加上
newline=''参数,避免Windows系统下出现多余空行;查询类SQL不需要执行conn.commit(),仅数据修改类操作需要调用。
内容的提问来源于stack exchange,提问作者user1819769
相关产品推荐
相关产品推荐

