python - 生成具有正确输出python的文件?
问题描述
我有一个 python 代码,用于生成批处理文件,输入来自 txt 文件
def create_bat_file(lp=None):
with open(r"test.txt", "r+") as file:
currentDir = os.path.abspath(".")
data = file.readlines()
for line in data:
a = line.split('=')
b = a[0]
f = a[1]
bk = a[2]
reldat = a[3]
f= open("{}.bat".format(f),"w+")
f.write("@ECHO OFF\n")
f.write("SET lp="'"{}"'"\n".format(lp))
if b == "RB":
f.write("SET reldat="'"{}"'"".format(reldat))
if b == "RB":
f.write("{}\\a.exe POST -d "'"best.variable.lp=lp"'"" " " "{}".format(currentDir,bk))
else:
f.write("{}\\a.exe POST -d "'"best.variable.cp=cp"'"" " " "{}".format(currentDir,bk))
f.close()
test.txt 文件有以下输入
CL=TEST14=https://test.com.org/latst/queue/TEST-R=2020-12-22
下面是输出
@ECHO OFF
SET lp="test"
SET reldate="2020-12-22
"C:\a.exe POST -d "best.variable.cp"=cp https://test.com.org/rest/api/latest/queue/TEST-RR
问题是它创建批处理文件(TEST14.bat)时
Wrong:
SET reldate="2020-12-22
"C:\a.exe POST -d "best.variable.cp"=cp https://test.com.org/rest/api/latest/queue/TEST-RR
在输出中,结束双引号出现在下一行,它应该总是像
Correct:
SET reldate="2020-12-22"
C:\a.exe POST -d "best.variable.cp"=cp https://test.com.org/rest/api/latest/queue/TEST-RR
解决方案
的最后一个字符line
是换行符\n
。的最后一个字符reldat
也是换行符。因此,上线:
f.write("SET reldat="'"{}"'"".format(reldat))
你最终\n
在最后一个之前添加了一个"
。
要修复,您可以删除\n
fromline
并在需要的地方添加缺少的:
def create_bat_file(lp=None):
with open(r"test.txt", "r+") as file:
currentDir = os.path.abspath(".")
data = file.readlines()
for line in data:
line = line[:-1] #### STRIP NEWLINE CHARACTER ####
a = line.split('=')
b = a[0]
f = a[1]
bk = a[2]
reldat = a[3]
f= open("{}.bat".format(f),"w+")
f.write("@ECHO OFF\n")
f.write("SET lp="'"{}"'"\n".format(lp))
if b == "RB":
f.write('SET reldat="{}"\n'.format(reldat)) #### ADD MISSING NEWLINE ####
if b == "RB":
f.write("{}\\a.exe POST -d "'"best.variable.lp=lp"'"" " " "{}".format(currentDir,bk))
else:
f.write("{}\\a.exe POST -d "'"best.variable.cp=cp"'"" " " "{}".format(currentDir,bk))
f.close()
我还自由地在字符串周围使用单引号,它看起来好多了!
推荐阅读
- c++ - 遇到这个问题的难点:允许用户输入数组的值,用for,while循环,也输出输入的最大数字
- sql - 尽管有特定的非空值,但 sqlite3 NOT NULL 约束失败
- r - R中数据帧的特殊过滤
- vba - 将 uid 和 pwd 文件调用到系统 dsn 的访问数据库中
- c - c中fseek函数中的origin参数
- excel - 如何将数据从sheet1中的单元格复制到sheet2,循环遍历每个单元格?
- postgresql - 使用 pgcrypto 存储在 postgres 中加密的某些字段
- linux - 带有捕获信号的 shell 脚本不会忽略信号
- dataframe - 在数据帧上使用 ipywidgets SelectMultiple
- c - C - 为什么我的代码在删除未使用的变量声明时会中断