【问题标题】:Creating a directory using part of a variable name使用部分变量名创建目录
【发布时间】:2017-06-05 17:41:58
【问题描述】:

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

(使用python3.5)

【问题讨论】:

  • 无法复制,适合我
  • 请在问题中添加任何错误消息。
  • 所以我没有收到错误,它会打印目录名并返回以退出代码 0 完成的过程。但尚未创建目录。

标签: python mkdir os.path


【解决方案1】:

您必须知道将在您的当前目录位置创建目录。

如果您在文件夹/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. 它会打印东西,让您知道发生了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多