我试图获取一个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),但我不确定如何解决它。有什么提示吗?
答案 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" )