我在Python中相当生疏(而且我的技能,如果没有生锈,最好是最基本的),我试图自动创建配置文件。我基本上试图获取MAC地址列表(由用户手动输入),并创建具有这些MAC地址作为其名称的文本文件,并在末尾添加.cfg。我设法绊倒并接受用户输入并将其附加到阵列中,但我遇到了绊脚石。我显然处于这个计划的婴儿阶段,但这是一个开始。这是我到目前为止所得到的:
def main():
print('Welcome to the Config Tool!')
macTable = []
numOfMACs = int(input('How many MAC addresses are we provisioning today? '))
while len(macTable) < numOfMACs:
mac = input("Enter the MAC of the phone: "+".cfg")
macTable.append(mac)
open(macTable, 'w')
main()
可以看出,我试图获取数组并在open命令中使用它作为文件名,而Python并不喜欢它。
非常感谢任何帮助!
答案 0 :(得分:1)
您正在尝试打开列表。你需要这样的东西:
open(macTable[index], 'w')
答案 1 :(得分:1)
我能看到的第一个问题是while循环的缩进。你有:
while len(macTable) < numOfMACs:
mac = input("Enter the MAC of the phone: "+".cfg")
macTable.append(mac)
虽然它应该是:
while len(macTable) < numOfMACs:
mac = input("Enter the MAC of the phone: "+".cfg")
macTable.append(mac)
至于文件,你需要在循环中打开它们,所以:
for file in macTable:
open(file, 'w')
或者你也可以在这段时间内完成:
while len(macTable) < numOfMACs:
mac = input("Enter the MAC of the phone: "+".cfg")
macTable.append(mac)
open(mac, 'w')
macTable.append(mac)
您可能想要改变的另一件事是输入处理。我知道你想从用户那里读取MAC地址并命名配置文件<MAC>.cfg
。因此我建议改变
mac = input("Enter the MAC of the phone: "+".cfg")
到
mac = input("Enter the MAC of the phone:")
filename = mac + ".cfg"
然后您需要决定是否要在其中添加MAC地址或文件名macTable
答案 2 :(得分:1)
首先,您不需要单独的列表来存储用户输入的值,您可以动态创建文件。
def main():
print('Welcome to the Config Tool!')
#macTable = []
numOfMACs = int(input('How many MAC addresses are we provisioning today? '))
while numOfMACs:
mac = input("Enter the MAC of the phone: ")
mac += ".cfg" # Adding extension to the file name
with open(mac, 'w') as dummyFile: # creating a new dummy empty file
pass
numOfMACs-=1 #Avoiding the infinite loop
main()
但是,您可以简单地使用for
循环运行指定的次数,这样可以使代码更清晰:
def main():
print('Welcome to the Config Tool!')
#macTable = []
numOfMACs = int(input('How many MAC addresses are we provisioning today? '))
for i in range(numOfMACs):
mac = input("Enter the MAC of the phone: ")
mac += ".cfg" # Adding extension to the file name
with open(mac, 'w') as dummyFile: # creating a new dummy empty file
pass
main()