标签: python-os

os.getenv和os.environ.get之间的区别?

这两者之间有什么不同吗?我什么时候应该使用另一个?其中一个被弃用了吗?它们似乎具有完全相同的功能.

>>> os.getenv('TERM')
'xterm'
>>> os.environ.get('TERM')
'xterm'

>>> os.getenv('FOOBAR', "not found") == "not found"
True
>>> os.environ.get('FOOBAR', "not found") == "not found"
True
Run Code Online (Sandbox Code Playgroud)

python environment-variables python-os

128
推荐指数
5
解决办法
11万
查看次数

获取脚本目录名称 - Python

我知道我可以使用它来获取完整的文件路径

os.path.dirname(os.path.realpath(__file__))
Run Code Online (Sandbox Code Playgroud)

但是我只想要文件夹的名称,我的脚本就在.如果我有my_script.py并且它位于

/home/user/test/my_script.py
Run Code Online (Sandbox Code Playgroud)

我想回"测试"我怎么能这样做?

谢谢

python file getcwd python-os

32
推荐指数
2
解决办法
6万
查看次数

使用os.environ.setdefault是否安全?

从我的ipython shell中,我在os.environ中看到了一个方法setdefault,但没有记录.http://docs.python.org/library/os.html#os.environ.它是否记录在其他地方?

def setdefault(self, key, failobj=None):
    if key not in self:
        self[key] = failobj
    return self[key]
Run Code Online (Sandbox Code Playgroud)

我可以使用此功能或为这些线写一个包装器吗?

python dictionary environment-variables python-os

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

python os.walk到一定程度

我想构建一个程序,它使用一些基本代码来读取文件夹并告诉我文件夹中有多少文件.我目前是这样做的:

import os

folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
    for root, dirs, files in os.walk(stuff, topdown=True):
        print("there are", len(files), "files in", root)
Run Code Online (Sandbox Code Playgroud)

这很有效,直到"main"文件夹中有多个文件夹,因为文件夹/文件管理不佳,它可能会返回一个长的垃圾文件列表.所以我最多只想进入第二级.例:

Main Folder
---file_i_want
---file_i_want
---Sub_Folder
------file_i_want <--*
------file_i want <--*
------Sub_Folder_2
---------file_i_dont_want
---------file_i_dont_want
Run Code Online (Sandbox Code Playgroud)

我知道如何去只有第一层用break,用del dirs[:]取自这篇文章也是这个职位.

import os
import pandas as pd

folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
    for root, dirs, files in os.walk(stuff, topdown=True):
        print("there are", len(files), "files in", root)
        del dirs[:] # …
Run Code Online (Sandbox Code Playgroud)

python directory subdirectory python-os

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

OSError: [Errno 30] 只读文件系统: '/User'。macOS Catalina

我正在为下载文件夹编写排序器。我收到此错误,我尝试更改权限:
chmod: Unable to change file mode on Users: Operation not permitted

import os

from_dir = os.path.dirname('/Users/user/Downloads/')
working_dir = os.walk(from_dir)
to_dir = os.path.dirname('/User/user/Downloads/New Folder/')


def move(folder):
    for roots, dirs, files in folder:
        for file in files:
            src_folder = from_dir + '/' + file
            to_folder = to_dir + '/' + file
            if not os.path.exists(to_dir):
                os.makedirs(to_dir)
            os.rename(src_folder, to_folder)


move(working_dir)
Run Code Online (Sandbox Code Playgroud)

也许还有另一种方法可以在不触及根文件夹的情况下编写此代码?

完整错误:

Traceback (most recent call last):
  File "/Users/beknazarnurbek/Documents/PycharmProjects/Move Files/move.py", line 19, in <module>
    move(working_dir)
  File "/Users/beknazarnurbek/Documents/PycharmProjects/Move Files/move.py", line 14, in …
Run Code Online (Sandbox Code Playgroud)

python macos chmod python-os macos-catalina

10
推荐指数
1
解决办法
11万
查看次数

multiprocessing.cpu_count 和 os.cpu_count 的区别

osmultiprocessing模块定义一个cpu_count函数。

os.cpu_count 记录如下:

返回系统中的 CPU 数量。如果未确定,则返回 None。

andmultiprocessing.cpu_count的文档说:

返回系统中的 CPU 数量。可能会引发 NotImplementedError。另见 os.cpu_count()

在我的机器上,它们都返回相同的结果:

>>> import os
>>> import multiprocessing as mp
>>> os.cpu_count()
8
>>> mp.cpu_count()
8
Run Code Online (Sandbox Code Playgroud)

我原以为这multiprocessing.cpu_count只是对 的引用os.cpu_count,但事实并非如此:

>>> os.cpu_count is mp.cpu_count
False
Run Code Online (Sandbox Code Playgroud)

那么它们之间有什么区别呢?我能保证他们总是返回相同的结果吗?此外,如果我想指定要为其创建的多个进程multiprocessing.Pool,我应该使用osormultiprocessing的函数吗?

python cpu multiprocessing python-os

8
推荐指数
1
解决办法
2875
查看次数

Python:从特定的 .env 文件获取 env 变量的值

在 python 中,有没有办法从特定的 .env 文件中检索 env 变量的值?例如,我有多个 .env 文件,如下所示:

.env.a .env.a ...

我在 .env.b 中有一个名为 INDEX=4 的变量。

我尝试通过执行以下操作来接收 INDEX 的值:

import os

os.getenv('INDEX')
Run Code Online (Sandbox Code Playgroud)

但这个值返回None。

有什么建议么?

python environment-variables python-os

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

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

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

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

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

python python-2.7 python-os

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

如何关闭使用 os.startfile() 打开的文件,Python 3.6

我想关闭一些使用 os.startfile() 打开的文件,例如 .txt、.csv、.xlsx。

我知道这个问题之前问过,但我没有找到任何有用的脚本。

我使用的是windows 10环境

python file python-3.x python-os

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

如何在 Linux 终端上进行按键检测,python 中的低级样式

我刚刚在 python 中实现了一个 Linux 命令外壳,仅使用os库的低级系统调用,诸如此类fork()

我想知道如何实现一个键侦听器,该侦听器将侦听键 (UP|DOWN) 以滚动浏览我的 shell 的历史记录。

我想在不使用任何花哨的库的情况下做到这一点,但我也希望这不是超级复杂的事情。到目前为止,我的代码只有大约 100 行代码,我不想为了获得一个简单的功能而创建一个怪物:D

我对这个问题的想法是,应该可以创建一个带有某种循环的子进程,它将侦听 up^[[A和 down ^[[B,按键,然后以某种方式将文本放入我的输入字段,就像一个普通终端。

到目前为止,我最感兴趣的是 key-listener 的可能性。但接下来我可能必须弄清楚如何将该文本输入到输入字段中。关于这一点,我想我可能必须使用提供的一些stdin功能sys

我只对让它在 Linux 上运行感兴趣,并希望继续使用低级系统调用,最好不是为我处理所有事情的 Python 库。这是一个学习练习。

python linux keypress low-level python-os

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