在Linux中使用python列表执行命令

问题描述 投票:0回答:1

我在工作中面临大量邮件迁移。为了使这更容易一些并通过一个有趣的项目来学习更多Python,我决定编写一个Python脚本,供所有人使用imapsync。我只是被困在这里。这是一段处理用户名的代码。其他变量已在代码的前面指定。

    userinput = input('Wat zijn de gebruikersnamen die verhuist worden van dit domein? Scheidt met een spatie: ')
user = userinput.split()
password1 = input('Welk wachtwoord wordt gebruikt?: ')
password2 = password1
for x in range(0, user):
    user1 = x  + '@' + domain
    imapsync = "screen -S mailmigratie -m imapsync --host1 " + host1 + " --ssl --host2 " + host2 + " --ssl2 --password1 " + password1 + " --password2 " + password2 + " --user1 " + user1 + " --user2 " + user1 + ">> imapsynclog" + user1 + ".txt"
    print("imapsync is nu gestart in een screen, er wordt een logfile gegenereerd")
    os.system(imapsync)
    print(user1)

我使用print(user1)函数检查列表是否可以正常打印,但出现此错误:

    Traceback (most recent call last):
  File "imapscript.py", line 82, in <module>
    for x in range(0, user):
TypeError: 'list' object cannot be interpreted as an integer

第一位评论者kantal解决了这个问题。我已经将“ for range(0,user)中的x:”更改为“ for x in user:”。

python list
1个回答
0
投票

欢迎使用StackOverflow!

我认为问题出在user变量上。按照下面的代码,user应该返回一个字符串列表。

user = userinput.split()

在如下所示的range中使用时]

for x in range(0, user):

[python解释器原本希望user为整数,但它是字符串列表,所以错误为TypeError: 'list' object cannot be interpreted as an integer

也许您正在寻找range(0, len(user))enumerate(user)之类的东西。

请探索他们的学习内容,希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.