Python 导出到 TXT 格式或剪贴板
Posted
技术标签:
【中文标题】Python 导出到 TXT 格式或剪贴板【英文标题】:Python export to a TXT formatted or to Clipboard 【发布时间】:2016-12-20 02:17:17 【问题描述】:我有一个类似 BM13302、EM13203 等的 csv 文件 我必须从文件中读取它,然后将其重新格式化为“BM13302”、“EM13203”等
我遇到的问题是如何导出(将其写入剪贴板或文件,我可以从中剪切和粘贴。这是一个很小的项目,用于为某些 SQL 代码的一部分重新格式化我的格式不干净,我不得不花一点时间格式化它。我只想将 python 指向一个目录,然后通过文件中的列表,让它以我需要的方式导出所有内容。
我有以下代码工作
import os
f = open(r"/User/person/Desktop/folder/file.csv")
csv_f = csv.reader(f)
for row in csv_f:
print(row)
我得到了预期的结果
我想了解如何获取列表(?)并像这样格式化 'BM1234', 'BM2351', '20394',....等 并将其复制到剪贴板
我想过做一些类似的事情
with open('/Users/person/Desktop/csv/export.txt') as f:
f.write("open=", + "', '")
f.close()
没有打印任何内容。找不到我需要的示例。谁能帮帮我??
非常感谢!
【问题讨论】:
要写入文件,您必须在"write mode"
中打开文件 - 即。 open(..., "w")
如果你使用with open()
,那么你就不需要close()
。它会自动关闭。
所以你只想在每个单词两边加上单引号?
【参考方案1】:
您可以让 csv 模块为您报价。据我所知,python 标准库中没有剪贴板,但有各种机制。这里我使用pyperclip
,这对于纯文本副本来说是合理的。
import pyperclip
import csv
import io
def clip_csv(filename):
outbuf = io.StringIO()
with open('file.csv', newline='') as infile:
incsv = csv.reader(infile, skipinitialspace=True)
outcsv = csv.writer(outbuf, quotechar="'", quoting=csv.QUOTE_ALL)
outcsv.writerows(incsv)
pyperclip.copy(outbuf.getvalue())
clip_csv('file.csv')
# DEBUG: Verify by printing clipboard
print(pyperclip.paste())
【讨论】:
完美,我打算使用 pyperclip 但不知道 io。非常感谢。我让它变得更聪明了一点,但是获取并放置一个变量来保存文件名的输入并正常运行,这样它并不总是同一个静态文件。你摇滚 tdelaney!【参考方案2】:我不确定,但我认为您尝试将引号字符 '
添加到 csv
中的所有数据中
import csv
with open('export.csv', 'w') as f:
# use quote char `'` for all data
writer = csv.writer(f, quotechar="'", quoting=csv.QUOTE_ALL)
writer.writerow(["BM1234", "BM2351", "20394"])
【讨论】:
以上是关于Python 导出到 TXT 格式或剪贴板的主要内容,如果未能解决你的问题,请参考以下文章