【问题标题】:Error on create directory with python in Windows在 Windows 中使用 python 创建目录时出错
【发布时间】:2017-02-13 16:35:16
【问题描述】:

我正在尝试在 python 中创建一个目录,但现在我使用的是 windows,但遇到了一些麻烦。

我的 app.py 代码是:

    # Python Library 
    # -*- coding: UTF-8 -*-

    import os

    def create_directory(server_path, branch):
        if not os.path.exists(rserver_path):
           os.makedirs(rserver_path)
        os.makedirs(server_path + "/" + branch)

但是当我运行代码时:

D:\tools\scripts>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from app import *
>>> create_directory('D:\temp\lixo','ProjectA_CO_4.2.x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "app.py", line 18, in create_directory
    os.makedirs(newpath)
  File "C:\Python27\lib\os.py", line 150, in makedirs
    makedirs(head, mode)
  File "C:\Python27\lib\os.py", line 157, in makedirs
    mkdir(name, mode)
WindowsError: [Error 123] A sintaxe do nome do arquivo, do nome do diret¾rio ou do r¾tulo do volume estß incorreta: 'D:\temp'

有人可以帮我吗?

【问题讨论】:

  • Widows 错误 123 是 文件名、目录名或卷标语法不正确。。建议你使用os.path.join()来构造路径。
  • 回溯显示os.makedirs(newpath),它没有出现在您显示的代码中。
  • Windows 不允许在文件名中使用制表符(即'\t')等控制字符。通过使用正斜杠和通过os.path.normpath 标准化来简化您的生活。您通常可以直接在 Windows 中使用正斜杠,但也有一些极端情况,因此我建议对使用正斜杠的字符串文字进行规范化。 Python 3 中的 pathlib 使这变得简单。

标签: python windows python-2.7 directory


【解决方案1】:

您真的将路径传递为:'D:\temp\lixo'?尝试转义反斜杠,如下所示:'D:\\temp\\lixo'。有关字符串转义的更多信息,您可以咨询documentation

【讨论】:

    【解决方案2】:

    对于 windows,您也需要在此处更改斜线方向:

    # Python Library 
    # -*- coding: UTF-8 -*-
    
    import os
    
    def create_directory(server_path, branch):
        if not os.path.exists(rserver_path):
           os.makedirs(rserver_path)
        os.makedirs(server_path + "\\" + branch) #  escaped backslash
    

    这应该会有所帮助。此外,正如@lukeg 所说,您所有的斜线都需要转义。即 '\' 而不是 '\'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2011-12-19
      • 2010-09-21
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      相关资源
      最近更新 更多