【问题标题】:How to take directory path as a user input on Windows?如何在 Windows 上将目录路径作为用户输入?
【发布时间】:2018-05-10 14:16:26
【问题描述】:

我正在尝试开发一个 UI,允许用户打开菜单、设置目录、输入文件名(word doc)并对文件执行一组任务并将新修改的文​​件保存在同一目录中/旧文件的位置。

但是,当我尝试设置目录时,我立即收到错误消息。这是我的代码:

def menu():
""" the main user-interaction loop
"""
    Cuts = ""

    while True:
        display_menu()
        choice = int(input('Enter your choice: '))
        print()

        if choice == 0:
            print('input directory')
            x = input()
            os.chdir(x)

尝试执行此操作时出现以下错误:

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: "'C:\\Users\\NAME\\Desktop'"

考虑到当我直接在脚本/它工作的 shell 上执行此操作时,这太奇怪了!

事实上,我的代码的第一行是: os.chdir(C:/Users/NAME/Desktop')- 完美运行。

我知道对于 Windows,有关于“/”作为转义的讨论 - 我部分理解这个概念,但我已经尝试了许多使用“\”而不是“/”或使用“//”的替代方案。还研究了使用 raw_input,但我使用的是 3.6,因此该功能甚至不起作用。

任何见解/帮助将不胜感激!谢谢!!

【问题讨论】:

  • 在询问产生异常的代码时,您应该始终在问题中包含完整的 Traceback。复制 Traceback 并将其粘贴到问题中,然后将其格式化为代码(选择它并键入 ctrl-k)。
  • 您需要使用操作系统原语来构建您的路径。 os.path.join(xx, yy, cc) 这将产生一个有效的路径 xx/yy/cc
  • 基于错误,我猜您输入的输入用单引号括起来?在为 input 函数键入字符串时,应省略使用引号。

标签: python windows directory


【解决方案1】:

根据您的错误信息:

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: "'C:\\Users\\NAME\\Desktop'"

我猜你在input 提示符中输入了'C:\Users\NAME\Desktop'。省略引号 (''),然后就可以开始了。

否则你最终会将这个字符串传递给os.chdir:"'C:\Users\NAME\Desktop'",这不是一个有效的路径。

【讨论】:

  • @Pymateur 很高兴听到!你能接受我的帖子作为你问题的答案吗?
【解决方案2】:

使用 Os 原语,您的代码将类似于:

x = input()
path = os.path.join(os.getcwd(), x)
os.chdir(path)

这将从您的当前目录导航

【讨论】:

  • 大家好,谢谢大家的回复,我是新来的。但我会在编辑中放入上面的回溯^。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多