【问题标题】:Python Write to Record to New Text File [closed]Python写入记录到新的文本文件[关闭]
【发布时间】:2015-12-10 22:19:37
【问题描述】:

下面的代码将每条记录写入单个文本文件。我想为每条记录创建一个新的文本文件。有没有办法可以将唯一字符或数字附加到文件名以强制生成新文件?

import pyodbc
import csv

# Create connection
cnxn = pyodbc.connect(driver="{SQL Server}",server="<server>",database="<database>",uid="<username>",pwd="<password>")
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM <table>")
row = cursor.fetchall()

with open(r"c:/Projects/record.txt", "w") as f:
    csv.writer(f).writerows(row)

【问题讨论】:

  • 对于所描述的场景,这段代码看起来很合理——你遇到错误了吗?如果是这样,请包括它。如果不是,请说明您遇到了什么麻烦(或您的实际问题是什么)。
  • 上面的代码将每条记录写入单个文本文件。我想为每条记录创建一个新的文本文件。有没有办法可以将唯一字符或数字附加到文件名以强制生成新文件?
  • @localhost 请edit您的问题并包含该信息,因为它是非常相关的。正如它现在所读的那样,您的问题有效地传达了:“我想学习一些东西。这里有一些代码。”
  • 我更新了问题。感谢您的建议。

标签: python pyodbc


【解决方案1】:

有没有办法可以将唯一字符或数字附加到文件名以强制生成新文件?

是的,当然有。只需遍历行并为每次迭代构建不同的文件名。例如,

import csv
import pyodbc

connStr = (
    r"Driver={SQL Server};"
    r"Server=(local)\SQLEXPRESS;"
    r"Database=myDb;"
    r"Trusted_connection=yes;"
    )
cnxn = pyodbc.connect(connStr)
crsr = cnxn.cursor()

sql = """\
SELECT 101 AS numthing, 'foo' AS txtthing
UNION ALL
SELECT 102 AS numthing, 'bar' AS txtthing
UNION ALL
SELECT 103 AS numthing, 'baz' AS txtthing
"""
crsr.execute(sql)
i = 1
for row in crsr:
    with open('C:/__tmp/Projects/record{0}.csv'.format(i), 'w') as f:
        csv.writer(f).writerow(row)
        i += 1
crsr.close()
cnxn.close()

创建按顺序编号的文件

record1.csv
记录2.csv
记录3.csv

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多