繁体   English   中英

Python中的字符串+变量+字符串格式

[英]String + Variable + String formatting in Python

我是Python的新手,所以请放轻松,我确定我的问题有一个非常简单的解决方案,这似乎使我无所适从。 我正在尝试以以下格式将字符串写入文件:

"string1" variable "string2"

但是似乎总是写“ string2”“ string1”变量

这是我的代码:

inF = open("f:\test\Users.txt", 'r')
outF = open("f:\test\commands.txt", 'w')

for line in iter(inF):
    s = "{0} {1} {2}" .format("adduser ",line," password")
    outF.write(s)
inF.close()
outF.close()

我也尝试过:

for line in iter(inF):
    outF.write("adduser " + lines + " password")

输出始终为:

passwordadduser user.name

当您从文件中读取一行时,它将始终包含换行符。 然后,您直接将其串联起来。 所以实际上您看到的是:

adduser line1\n
passwordadduser line2\n
passwordadduser line3\n

等等

要解决此问题,请在阅读时删除该行:

for line in iter(inF):
    line = line.strip('\n')
    s = "{0} {1} {2}\n" .format("adduser ",line," password")

如果进行检查,您会看到前两行是这样的:

adduser user1
 passwordadduser user2

你是逐行读取文件中的行: line会包含一个尾随“\\ n”所以,当你把它写它进入一个新的生产线,而你不终止换行写的是什么,所以你得到passwordadduser 就像是:

outF.write("{0} {1} {2}\\n" .format("adduser ",line.strip()," password"))

应该解决您的问题。

请使用上下文管理器来处理文件。 您还应该在读写时处理换行符\\n

in_filename = "f:\\test\\Users.txt"
out_filename = "f:\\test\\commands.txt"

with open(in_filename, 'r') as in_fh, open(out_filename, 'w') as out_fh:
    for in_line in in_fh:
        out_line = "{} {} {}\n" .format("adduser", in_line.strip('\n'), "password")
        out_fh.write(out_line)

Users.txt:

us1
us2
us3

命令.txt:

adduser us1 password
adduser us2 password
adduser us3 password

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM