我尝试在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
。
问题是我得到很多文件夹,但所有文件夹都是从第一行逐个字母创建的,而不是像我想要的那样逐行创建。
比你非常为善良的帮助和享受你的一天,
英戈
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
构造,使此异常安全。
问题是您正在迭代第一行而不是行列表,因此您可以从第一行为每个字符创建文件夹。请改用readlines
。
with open('systems.txt') as f:
lines = f.readlines()
for file_name in lines:
os.mkdir(os.path.join(path, file_name))
尝试使用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))
import os
path = '.'
lines = tuple(open('systems.txt', 'r'))
print lines
for system in lines:
os.mkdir(os.path.join(path,(system)))