2017-06-05 75 views
0

python和Im试图创建一组目录,并在每个目录中创建一个文件,输入名称将是一个字符串开始>符号但我不希望目录包含>。使用变量名的一部分创建一个目录

我试过做下面的事情;

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_ids列表中选择> seq1> seq2> seq3等,并为每个文件创建一个目录。

(与python3.5工作)

+1

无法复制,对我有效 –

+0

请添加任何错误消息,你会得到的问题。 – mkiever

+0

所以我没有得到一个错误, 它打印dirname并返回进程完成退出代码0. 但目录尚未创建。 – TJ93

回答

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) 
  1. 它采用os.path.join,而不是自制的串联。这是您应该始终遵循的最佳做法。
  2. 它采用try/except代替if,又是你应该遵循最佳实践(Reference
  3. 它打印出的东西,所以你知道是怎么回事。
相关问题