我尝试在Python 2.7中编写一些内容,以从.txt文件创建许多目录。到目前为止,我明白了:
import os
path = '.'
system_name = open('systems.txt')
system = system_name.readline()
while system:
print(system)
for system in system:
os.mkdir(os.path.join(path,(system)))
system_name.close()
我的输入文件如下:
BaO_Fm-3m_26961_RPBE
BaZrO3_Pm-3m_90049_RPBE
BeO_P63mc_61181_RPBE
Bi2O3_P211c_15072_RPBE
CaMgSi2O6_C12c1_30522_RPBE
...
问题是我有很多文件夹,但所有文件夹都是从第一行开始逐个字母创建的,而不是像我预期的那样逐行创建的。
非常感谢您的帮助,并祝您生活愉快,
Ingo
答案 0 :(得分:1)
readline()
读取一行。然后,您使用for system in system
遍历该行,以便依次获得每个字符。
方便地,Python中的文件已经可以逐行进行迭代了:
system_name = open('systems.txt')
for system in system_name:
os.mkdir(os.path.join(path, system))
system_name.close()
您还可以查看with
构造以使此异常安全。
答案 1 :(得分:1)
问题是您要遍历第一行而不是行列表,因此要为第一行中的每个字符创建文件夹。请改用readlines
。
with open('systems.txt') as f:
lines = f.readlines()
for file_name in lines:
os.mkdir(os.path.join(path, file_name))
答案 2 :(得分:1)
尝试使用 with 语句打开文件,以提高安全性。另外,您可以使用for循环在文件上进行迭代,这将为您提供所有内容。
with open('systems.txt') as system_name:
for line in system_name:
print(line)
line = line.strip() #to remove things like '\n'
os.mkdir(os.path.join(path, line))
答案 3 :(得分:0)
import os
path = '.'
lines = tuple(open('systems.txt', 'r'))
print lines
for system in lines:
os.mkdir(os.path.join(path,(system)))