基于python中文本文件中的名称创建文件夹

时间:2016-07-06 21:20:30

标签: python

我试图获取一个python脚本来读取一个文本文件,其中包含一个名称列表,并根据这些名称创建文件夹。例如,如果文本文件中包含“john_doe”和“jane_doe”,则脚本应创建两个文件夹。一个叫做“john_doe”,一个叫做“jane_doe”。

当我运行我的脚本时,我收到错误WindowsError:[错误123]文件名,目录名或colume标签语法不正确:“,打开文件'names.txt',模式'r'在0X00000000025E6300>”

这是我正在运行的脚本:

import os

with open('names.txt') as x:
    for line in x:
        line = line.strip()
        os.mkdir(str(x))

我认为这更多是Windows问题(因此是WindowsError),但我不确定如何解决它。有什么提示吗?

4 个答案:

答案 0 :(得分:3)

而不是:

        os.mkdir(str(x))

你的意思是:

        os.mkdir(str(line))

您甚至不需要str(),因为line已经是str。 (我怀疑你只是添加了它,因为os.mkdir(x)给你一个错误。)

您之前的代码尝试创建多个目录,所有目录都名称为&#34; <open file 'names.txt', mode 'r' at 0X00000000025E6300>&#34;。

答案 1 :(得分:0)

通过以下方式检查当前的工作目录:

>>> import os
>>> os.getcwd()

您可能会发现您的程序可能没有相应的权限来对目录进行更改。

尝试更改为其他内容:

>>> os.chdir("<someAbsolutePath>")

如果您发现该程序可以在另一个目录上编写/进行更改,那么您可能需要更改该程序的权限。

答案 2 :(得分:0)

您可能会遇到名称之间存在特殊字符和空格的问题。当你无法逃避多字目录名之间的空白时,Windows并不喜欢它。

尝试(i)将行读取为Unicode(以避免特殊字符问题),然后(ii)使用下划线连接名称以避免出现空白问题:

import os

with open('names.txt', 'rU') as x:
    for line in x:
        line = line.strip().split()
        filename = "_".join([i for i in line])
        os.mkdir(filename)

答案 3 :(得分:0)

# My solution from above...
# Trying to create folders from a file
# By Rob Thomas
# 16/3/2019 Ver 2.0

import os,sys

# Change to correct folder to create files in
# Just copy from Windows Explorer, then add in the extra "\"
os.chdir("R:\\_1 Y9 Yellow")
print(os.getcwd())
right=input("Is this correct? Y/N: ")

if right.lower()!="y":
    print("Exiting...")
    sys.exit()

try:    # Also change to the correct file name 
    with open('Yellow.txt', "r") as x:
        for line in x:
            line = line.strip()
            os.mkdir(str(line))
        x.close()

except OSError:  
    print ("Creation of the directory failed" )
else:  
    print ("Successfully created the directory" )