【问题标题】:Python how to open a file without having the full pathPython如何在没有完整路径的情况下打开文件
【发布时间】:2021-09-08 04:35:19
【问题描述】:

所以我想在没有完整路径的情况下从文件中读取内容,我该怎么做? 我当前的代码

import json

file1= 'C:\\Users\\klaus\\OneDrive\\Desktop\\Script\\Mediamarktp.json'

with open(file1, 'r') as handle:
    json_out = json.load(handle)

profile_name = ['Profile1']

data = [x for x in json_out if x['profilename'] in profile_name]
email = (data[0]['email'])
password = (data[0]['password'])
website = (data[0]['website'])
precart = (data[0]['precart']=='True')
profilename1 = (data[0]['profilename1'])
proxy = (data[0]['proxy']=='True')

print(email)
print(password)
print(precart)

file1 目前 = 'C:\Users\klaus\OneDrive\Desktop\Script\Mediamarktp.json' 但我希望我的脚本只需查找 = '\Script\Mediamarktp.json' 即可打开它 喜欢

file1 = 'C:\\*\\Script\\Mediamarktp.json'

我该怎么做?

【问题讨论】:

  • 期望您的程序扫描整个文件系统以寻找与您的路径后缀匹配的一个路径是不合理的。

标签: python json path filepath


【解决方案1】:

这与glob 模块配合得很好。

import glob
myFiles = glob.glob(r'C:\**\Mediamarktp.json, , recursive=True)

如果您不使用recursive=True,它将不会在子文件夹中搜索。 但这实际上会找到具有该名称的所有文件并搜索驱动器上的所有目录。因此它会很慢,这样做是不合理的。如果您想使用glob,请将其限制在更合理的起始路径。

另一种方法是将工作目录设置为包含文件的路径

import os
os.chdir(myPath)

这样,您可以直接使用文件名打开文件。您还可以使用脚本启动工作目录中的相对路径。如果你不确定它是什么,你可以使用

print("Current Working Directory " , os.getcwd())

【讨论】:

    【解决方案2】:

    在大多数操作系统中运行的程序都带有“当前工作目录”的概念。因此,当要求代码打开文件时,它可以是完整路径(就像你的以“C:”开头的 Windows 一样),也可以是“相对路径”,这取决于文件相对于当前工作目录的位置.

    如果您从命令提示符运行程序,您可以cd 到正确的父目录 (C:\\Users\\klaus\\OneDrive\\Desktop\\),然后仅使用相对路径访问该文件。但它不能以\\ 开头!

    file1= 'Script\\Mediamarktp.json'
    

    【讨论】:

    • 代替cd,您可以通过让脚本将当前工作目录设置为脚本父目录来实现道德等价。然后使用相对路径进行文件查找。
    • 是的,想到了。我认为您也可以在 Windows 文件属性中设置可执行路径。 (不是 Windows 专家)。
    • 我认为大多数人都希望能够在其他位置重用该脚本,因此使用os.chdir() 使其仅适用于一组文件。
    • 是的,实际上取决于脚本的使用方式。如果正在打开的文件在安装时与应用程序捆绑在一起,那么我将使用 os.chdir 技巧,或者使用脚本位置并加入它的相对路径。如果文件由用户提供,那么只使用给定的 cwd 更有意义。
    猜你喜欢
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2015-07-08
    • 2016-04-26
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多