在Python中使用数组中的名称创建新的文本文件

时间:2015-05-14 14:01:51

标签: python list file-io

我在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并不喜欢它。

非常感谢任何帮助!

3 个答案:

答案 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()