为什么我会收到错误"TypeError: system() takes at most 1 argument (3 given)"



我正在尝试制作一个脚本,该脚本可以获取信息并将其存储在其他程序的文件中

我的代码是这样的,

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))

相关内容

  • 没有找到相关文章

最新更新