python的新手,我试图创建一组目录,并在每个目录中创建一个文件,输入名称将是一个以>开头的字符串。签名,但我不希望该目录包含>。
我试图做以下事情;
seq_id = ">seq"
dirname = seq_id[1:]
print(dirname)
if not os.path.isdir('./' + dirname + '/'):
os.mkdir('./' + dirname + '/')
print("directory made")
当我使用seq_id [1:]位时它不会创建目录,但它会打印它。所以我不明白为什么它不会创建目录。
我最终想要构建一个函数,该函数将从文件中获取seq_id列表,> seq1> seq2> seq3等,并为每个文件创建一个目录。
(使用python3.5)
答案 0 :(得分:0)
您必须知道将在当前目录位置创建目录。
如果您位于文件夹/tmp/foo/
中,您的脚本位于/tmp/bar/myscript.py
,并且您使用python ../bar/myscript.py
执行该目录,则会在/tmp/foo/
中创建目录,而不是/tmp/bar/
更多的是,因为您只是跳过if not os.path.isdir('./' + dirname + '/'):
可能出现的错误并且从不打印任何内容,您将无法知道目录是否已存在。
您可以执行以下操作:
import os
strings = ['>foo', '>bar', '>baz']
def make_directories(input_list):
for string in input_list:
dirpath = os.path.join('./', string[1:])
try:
os.mkdir(dirpath)
except FileExistsError:
print('Directory {} already exists'.format(dirpath))
else:
print('Directory {} created'.format(dirpath))
make_directories(strings)
os.path.join
而不是自制连接。这是你应该随时遵循的最佳实践。try
/ except
代替if
,这也是您应该遵循的最佳做法(Reference)