我不知道为什么我的python文件创建不起作用

时间:2017-07-25 21:14:16

标签: python createfile

import sys

filepath = "D:\\Desktop\\SIGN IN OUT\\"
times = ["min.txt","hour.txt","datein.txt","dateout.txt"]

while True:
    z = input("Enter Your First and Last Name. Just don't put a . in your name. : ")
    y = z+'\\'+z
    for x in range(len(times)):
        f = open(filepath+y+times[x],'w')
        f.write('0')
        f.close()

2 个答案:

答案 0 :(得分:3)

使用\\加入文件并不是最好的方法。推荐的方法是使用os模块中的os.path.join

import os

while True:
    z = input("Enter Your First and Last Name. Just don't put a . in your name. : ")
    y = os.path.join(*z.split())
    for x in times:
        with open(os.path.join(filepath, y, x), 'w') as f:
            f.write('0')

我也建议 -

  1. 使用上下文管理器处理文件,它可以使您的代码更清晰。

  2. 直接迭代times而不是索引

  3. 另外,正如Jean-FrançoisFabre在他的回答中所述,你最好使用os.mkdir创建任何在你创建文件之前不存在的目录。 Here's是一个很好的参考。

答案 1 :(得分:2)

问题在于该代码:

z = input("Enter Your First and Last Name. Just don't put a . in your name. : ")
y = z+'\\'+z
  • y是相同价值的两倍,由\\加入(赢得了您未预料到的目录,但这不是主要问题)
  • 但是在尝试打开文件时,您可能会在不存在的目录中执行此操作。

所以你必须添加(使用os.path.join更清洁,因为@COLDSPEED注意到了):

my_dir = os.path.join(filepath, y)
if not os.path.isdir(my_dir):
    os.makedirs(my_dir)  # creates dirs if doesn't exist, with full path

在打开文件之前,所以应该包含它们的目录(open如果目录不存在则会失败)