【问题标题】:Combining paths using os.path.join使用 os.path.join 组合路径
【发布时间】:2016-10-06 00:11:51
【问题描述】:

我想知道您如何正确使用 os.path。基本上我想做的是向用户询问一个目录,然后他们输入一个字母(在这种情况下为N),然后在目录中输入一个文件名,它将目录与文件结合起来。

例如:

C:\Desktop

N hello

产生的最终结果是 C:\Desktop\hello。

import os
import os.path
import shutil
from pathlib import Path

': 目录 = 输入() 搜索文件() directory1=search_characteristics(目录) #print(directory1)

我做错了什么?

【问题讨论】:

  • 你能解释一下你的整体代码应该做什么,它目前是如何失败的,以及你期望它做的事情与你认为的不一样。这有助于缩小故障排除范围,以提供更快、更好的答案。
  • @idjaw 我正在慢慢处理整个代码,但是 N 应该做的是如果输入的第二行以字母 N 开头,则搜索将搜索名称完全一致的文件匹配特定名称。 N 后面是空格;在空格之后,该行的其余部分将指示要搜索的文件的名称。现在,当我尝试将路径组合在一起时,例如 C:\Desktop 和桌面中的 hello.txt,它仍然会显示 C:\Desktop 而不是 C:\Desktop\hello
  • 您应该使用os.walk 之类的东西来搜索目录。
  • @idjaw 不幸的是,我不能使用 os.walk 或 glob。
  • interesting[0] 使用了错误的变量,拆分变量为 interesting1

标签: python python-3.4 os.path


【解决方案1】:

在这里,这应该可以工作。

def search_characteristics(directory):
    interesting = input()
    interesting = interesting.split(" ")
    if (interesting[0] == 'N'):
        directory += (os.sep + interesting[1])
        print(directory)
    elif interesting.startswith('E'):
        return os.path.splitext(directory,'')
    else:
        print("Error")
        return search_characteristics(directory)

如果你必须使用 os.path.join 那么你可以用 os.sep 替换该行:

directory = os.path.join(directory, interesting[1])

【讨论】:

  • 我在开始工作时编辑了我的原始帖子,但遇到了另一个问题。如果我输入 N hello ,它将显示为 C:\Desktop\hello' but what if the file doesnt exist say N doesntexist`,我需要检查它是否是一个文件。我添加了 if isfile 来检查它是否是一个文件,但是无论我做什么,它都会说Not a file,即使它是一个文件。
  • 我尝试运行您的代码,但没有任何问题。您使用什么输入?
  • 代码工作正常,但我觉得它的工作方式错误。我觉得它可能会得到我输入的“不是文件”输入,因为它实际上不是一个文件,而是一个目录。基本上说我有一个名为realfile.txt 的真实文件和一个不存在的名为 fakefile 的文件。我会运行代码。 C:\Desktop 我会输入 N realfile.txt,它会返回 C:\Desktop\reaifile.txt。我再次运行它并放入 N fakefile.txt。它应该说“不是文件”。当我运行我当前的代码时,我得到两者的“不是文件”。我将如何修复它以使真实文件不会出现“不是文件”错误?
  • 对不起,我应该澄清一下。我用一个真实的文件和一个假的文件检查了它,它在这两种情况下都给出了正确的响应。你是正确的,如果条目是目录,os.path.isfile() 将返回 false,但正如我所说,我看不到你是如何获取目录的。
  • 您在目录中使用什么或您的输入是什么?我从 `if name == 'main' 获取目录。
猜你喜欢
  • 2013-06-30
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多