我正在尝试制作一个脚本,该脚本可以获取信息并将其存储在其他程序的文件中
我的代码是这样的,
import os
currentinfo = input("Enter username: ")
os.system('echo', "Username:", currentinfo, ">> info.txt")
我得到的错误是,
os.system('echo', "Username:", currentinfo)
TypeError: system() takes at most 1 argument (3 given)
我该如何解决这个问题?
我是python的新手,所以请耐心等待。
错误非常简单 - 您正在使用 3 个参数调用os
包的system
方法。检查 api 确认这需要 1 个参数,而不是 3 个。因此,解决此问题的一种方法是将所有术语组合成 1 个字符串参数。您可能还需要在传递给echo
的内容周围加上引号:
os.system(f'echo "Username: {currentinfo}" >> info.txt')
正如至少 1 条评论所建议的那样,使用代码写入文件而不是依赖系统调用会更 pythonic。当您使用>>
时,我假设您要附加到文件中,而不是覆盖它(如果它已经存在(:
currentinfo = input("Enter username: ")
text_to_write = f'Username: {currentinfo}'
with open('info.txt', 'a') as outfile: # the 'a' sets append mode
outfile.write(text_to_write) # <-- optionally add a n if you want a newline
希望对您有所帮助,祝您编码愉快!
问题是 Python 将'echo'
、"Username:"
、currentinfo
和">> info.txt"
视为不同的参数,而不是像您希望的那样连接字符串。传递给以逗号分隔的函数的变量被解释为参数。
要解决此问题,请使用+
运算符连接字符串或使用格式化字符串(一个更干净的选项(。
使用+
运算符:
os.system('echo Username: ' + currentinfo + ' >> info.txt')
使用格式化字符串:
os.system(f'echo Username: {currentinfo} >> info.txt')
或:
os.system('echo Username: {} >> info.txt'.format(currentinfo))