【发布时间】:2018-01-15 18:17:40
【问题描述】:
我想在 Python 3.6 中转义这个命令,因为我想用它在大量 csv 文件中运行它。
for filename in glob.glob(CSV_FOLDER_LOCATION + "/*.csv"):
# Adds quotes to filename because of the problem caused by spaces in path names
quoted_filename = '"' + filename + '"'
os.system(MYSQL_LOCATION + r" -u root LOAD DATA INFILE " + quoted_filename + " INTO TABLE " + TABLE_NAME +
r" CHARACTER SET ascii FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '/n' IGNORE 1 LINES")
逗号显示为空格。这是输出:
C:/Program Files/MySQL/MySQL Server 5.7/bin/mysql.exe -u root LOAD DATA INFILE "C:/prog/csv/CSVFiles\CC19711977ZWEIG-ZZ.csv" INTO TABLE vcc2.tmp_cards CHARACTER SET ascii FIELDS TERMINATED BY ENCLOSED BY '"' LINES TERMINATED BY '/n' IGNORE 1 LINES
转义该字符串的正确方法是什么?
也许我真的很厚并且遗漏了一些明显的东西,但是我怎么能“原始字符串”它 C 风格?
【问题讨论】:
-
你为什么要通过
os.system()这样做? -
请给我你的建议!
-
嗯,有一个python library made for interacting with MySQL,所以我可能会使用它。
-
它必须是独立的,这只是一个非常简单的脚本,需要将文件夹中的所有CSV文件导入MySQL
-
您在寻找
shlex.quote吗?