【问题标题】:OSError in creating folder in a user given path PYTHON在用户给定路径 PYTHON 中创建文件夹时出现 OSError
【发布时间】:2021-10-10 18:47:39
【问题描述】:

我有一个函数,我想从用户那里获取路径作为输入,并且我想在路径中创建一个文件夹。

这里是sn-p的代码:

import os
import datetime

def create_folder(name)
    current_time = datetime.datetime.now()
    folder_name = str(name)+"_("+str(current_time)+")_DATA"
    parent_dir = directory_var.get()        #getting value from tkinter
    print(folder_name)
    print(parent_dir)
    path = os.path.join(parent_dir, folder_name)
    os.mkdir(path)

create_folder("John")

我得到的错误输出是:

John_(2021-08-05 23:43:27.857903)_DATA
C:\app_testing

os.mkdir(path)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 
'C:\\app_testing\\John_(2021-08-05 23:43:27.857903)_DATA'

我需要在给定的 parent_dir 中创建一个新文件夹或目录,文件夹名称为 John_(date)_DATA

我们将不胜感激。 谢谢你

【问题讨论】:

    标签: python python-3.x path python-os


    【解决方案1】:

    试试这个:

    import os
    import datetime
    from time import strftime
    
    
    def create_folder(name):
        current_time = datetime.datetime.now()
        x = current_time.strftime('%Y/%m/%d %H.%M.%S')  # You choose the format!
        folder_name = str(name)+"_("+str(x)+")_DATA"
        parent_dir = directory_var.get()  # getting value from tkinter
        print(folder_name)
        print(parent_dir)
        path = os.path.join(parent_dir, folder_name)
        os.mkdir(path)
    
    
    create_folder("John")
    
    

    【讨论】:

    • 从 Windows 的角度来看,正斜杠与冒号一样糟糕。
    • 正如我所说:'你选择格式!';也许我不够清楚
    • 是的,你做到了,但是新手有一种盲目粘贴代码的方法,而不必费心阅读这样的 cmets。最好不要通过提供一个你知道(或应该知道)行不通的例子来误导初学者。如果 OP 知道 Windows 文件名的规则,他就不会问这个问题。
    • 对不起,我没有说清楚答案只是他可以做些什么来改变格式的一个例子;谢谢你的回答!
    【解决方案2】:

    我认为您的问题可能是冒号?见Windows file/path naming conventions。具体来说,

    Use any character in the current code page for a name, including 
    Unicode characters and characters in the extended character set 
    (128–255), except for the following:
    
    The following reserved characters:
    
    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    

    如果您重新格式化日期以替换 : 可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-17
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2020-07-09
      • 2021-07-06
      相关资源
      最近更新 更多