标签: python-os

如何在Python中获取文件系统的根目录?

情况:我需要使用最 Pythonic 的方式找到任何操作系统的顶级 [root] 目录,而不需要系统调用。

问题:虽然我可以使用诸如 之类的东西检查操作系统if "Windows" in platform.system(),但我不能太确定驱动器号是否总是C:\/(后者不太可能)。我也无法确定是否只有 Windows 和 *NIX 需要编目。

问题:有没有办法获取任何操作系统的顶级目录?最好使用该os模块,因为我已经在使用它了。

python python-2.7 python-os

7
推荐指数
2
解决办法
1万
查看次数

os.popen().read() - charmap 解码错误

我已经阅读了UnicodeDecodeError: 'charmap' codec can't decode byte X in position Y: character maps to <undefined>。虽然错误信息相似,但代码完全不同,因为我os.popen在这个问题中使用了open. 我不能使用其他问题的答案来解决这个问题。

output = os.popen("dir").read()
Run Code Online (Sandbox Code Playgroud)

该行应该将命令“dir”的输出分配给变量“output”,导致此错误:

'charmap' codec can't decode byte 0x88 in position 260: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

我认为这可能是因为文件夹中的某些文件包含诸如?, ?, ? 以他们的名义。我不知道如何解决这个问题。

python windows cmd python-3.x python-os

6
推荐指数
1
解决办法
4933
查看次数

python os.walk 显示混合窗口和unix路径

我正在尝试识别文件夹中具有特定名称的所有文件。我正在使用标准代码来执行此操作,如下所示:

for paths, subdirs, files in os.walk(start_dir, topdown=True):
    for file in files:
        print(os.path.join(paths, file))
Run Code Online (Sandbox Code Playgroud)

我的问题是关于 Windows 机器中这段代码的输出,基本上路径的动态部分有错误的斜杠符号:

D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\AesSheetNumberEntity.java
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\DocumentReceivedDetailEntity.java
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\DocumentReceivedEntity.java
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\DocumentTypeEntity.java
Run Code Online (Sandbox Code Playgroud)

给出的开始文件夹是:

D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim
Run Code Online (Sandbox Code Playgroud)

文件夹分隔符是 unix one:"/"

而 os.walk 函数找到的所有后续子文件夹都带有 Windows 斜杠:"\"

所以最后我有无效的路径,不能立即使用。这是 python os 库中的错误还是实际上的错误?

目前我可以轻松地用正确的分隔符替换错误的分隔符,但我想知道这是否是唯一的方法?

python windows path-separator python-os

6
推荐指数
1
解决办法
3978
查看次数

如何在多个进程尝试写入然后同时从文件读取时防止竞争条件

我有以下代码(为简洁起见而简化):

import os
import errno
import imp


lib_dir = os.path.expanduser('~/.brian/cython_extensions')
module_name = '_cython_magic_5'
module_path = os.path.join(lib_dir, module_name + '.so')
code = 'some code'

have_module = os.path.isfile(module_path)
if not have_module:
    pyx_file = os.path.join(lib_dir, module_name + '.pyx')

    # THIS IS WHERE EACH PROCESS TRIES TO WRITE TO THE FILE.  THE CODE HERE 
    # PREVENTS A RACE CONDITION.
    try:
        fd = os.open(pyx_file, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
    except OSError as e:
        if e.errno == errno.EEXIST:
            pass
        else:
            raise
    else:
        os.fdopen(fd, 'w').write(code)

# THIS …
Run Code Online (Sandbox Code Playgroud)

python io race-condition python-import python-os

5
推荐指数
1
解决办法
4835
查看次数

如何通过网络驱动器快速从.csv文件中获取最后一行?

我将数千个时间序列.csv存储在网络驱动器上的文件中。在更新文件之前,我首先获取文件的最后一行以查看时间戳,然后在该时间戳之后使用数据进行更新。如何才能.csv通过网络驱动器快速获取文件的最后一行,从而不必.csv仅使用最后一行就加载整个大文件?

python csv network-programming pandas python-os

5
推荐指数
1
解决办法
9621
查看次数

jupyter笔记本可以找到自己的文件名吗?

jupyter笔记本是否有可能获得自己的文件名,类似于我们从python脚本执行的操作吗?

os.path.basename(__file__) 似乎不起作用,至少对于jupyterlab上的我来说

sys.argv[0] 退货 my_home/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py

python python-os jupyter-notebook jupyter-lab

5
推荐指数
1
解决办法
1609
查看次数

python os 模块文档中的代码示例如何创建安全漏洞?

文件os模块作出如下声明:


笔记

在实际使用 open() 之前,使用 access() 来检查用户是否被授权例如打开文件会创建一个安全漏洞,因为用户可能会利用检查和打开文件之间的短时间间隔来操纵它。最好使用EAFP技术。例如:

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
    return fp.read()
return "some default data"`
Run Code Online (Sandbox Code Playgroud)

最好写成:

try:
    fp = open("myfile")
except PermissionError:
    return "some default data"
else:
    with fp:
        return fp.read()
Run Code Online (Sandbox Code Playgroud)

我不明白用户如何“利用”这个间隔。如果open要引发异常,我不确定如何os.access防止引发该异常。同样,如果用户以某种方式操作文件,为什么不在 EAFP 版本的open命令之前执行文件操作?

我确实理解第二个版本可能更健壮,因为os.access可能无法正确识别可能引发 a 的条件PermissionError,但我不明白LBYL版本的安全性如何。有人可以解释一下吗?

python file-access python-os

5
推荐指数
1
解决办法
74
查看次数

哪些“命令动词”可用于 os.startfile 'operation' 参数,它们有什么作用?

根据Python 文档os.startfile需要两个参数:pathoperation。Path 描述得相当好且不言自明,但是对于operation,所要说的是:

当给出另一个操作[(not 'open')] 时,它必须是一个“命令动词”,指定应该对文件做什么。Microsoft 记录的常用动词是'print'and 'edit'(用于文件)以及'explore''find'(用于目录)。

这意味着存在其他命令动词。还有其他可用的命令动词吗?如果是这样,它们是什么以及它们做什么?

具体来说,我想知道与“打开文件位置”操作相关的命令动词。

python windows python-3.x python-os

5
推荐指数
1
解决办法
1326
查看次数

使用 glob 的多个文件扩展名来查找文件

我正在使用 glob 通过这行代码列出主目录中的所有 python 文件。我也想找到所有 .json 文件和 py 文件,但我找不到任何可以在一行代码中扫描多种文件类型的文件。

for file in glob.glob('/home/mohan/**/*.py', recursive=True):
    print(file)
Run Code Online (Sandbox Code Playgroud)

python directory glob filepath python-os

4
推荐指数
1
解决办法
3911
查看次数

Python:使用 os 模块检查目录是否存在

我正在尝试使用 os 模块验证作为用户输入接收的目录是否存在

这就是我接受输入的方式:

directory = input("Hi ! \n please type a directory, thanks !")
Run Code Online (Sandbox Code Playgroud)

这个想法是我想确保用户将输入一个现有的目录而不是别的

python validation input python-3.x python-os

4
推荐指数
2
解决办法
9131
查看次数