小编Vas*_*ily的帖子

在Python中获取文件的文件夹名称

在Python中,我应该使用什么命令来获取包含我正在使用的文件的文件夹的名称?

"C:\folder1\folder2\filename.xml"

"folder2"是我想要的.

我唯一想到的就是使用os.path.split两次:

folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]

有没有更好的方法呢?

python directory python-3.x

55
推荐指数
5
解决办法
10万
查看次数

从字典列表中删除重复项(具有唯一值)

我有一个字典列表,每个字典都描述了一个文件(文件格式、文件名、文件大小……以及文件的完整路径 [始终唯一])。目标是排除描述同一文件副本的所有词典(我只想要每个文件一个词典(条目),无论有多少副本。

换句话说:如果 2 个(或更多)dicts 仅在一个键(即 path)中不同 - 只留下其中一个)。

例如,这里是源列表:

src_list = [{'filename': 'abc', 'filetype': '.txt', ... 'path': 'C:/'},
            {'filename': 'abc', 'filetype': '.txt', ... 'path': 'C:/mydir'},
            {'filename': 'def', 'filetype': '.zip', ... 'path': 'C:/'},
            {'filename': 'def', 'filetype': '.zip', ... 'path': 'C:/mydir2'}]
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

dst_list = [{'filename': 'abc', 'filetype': '.txt', ... 'path': 'C:/'},
            {'filename': 'def', 'filetype': '.zip', ... 'path': 'C:/mydir2'}]
Run Code Online (Sandbox Code Playgroud)

python dictionary list python-2.x python-3.x

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

如何在urlretrieve中使用Progressbar模块

我的pyhton3脚本使用urlretrieve通过Internet下载了许多图像,我想为每个下载添加进度条,其中包含完成的百分比下载速度

进度模块似乎是一个很好的解决方案,不过虽然我已经通过看他们的榜样范例4似乎是正确的事情,我仍然无法理解如何将它环绕的urlretrieve

我想我应该添加第三个参数:

urllib.request.urlretrieve('img_url', 'img_filename', some_progressbar_based_reporthook)
Run Code Online (Sandbox Code Playgroud)

但是如何正确定义呢?

python python-3.x progress-bar

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

将文件从 ZIP 直接提取到另一个 ZIP

我的目标是从 Zip 存档中提取某些文件并将它们直接流式传输到另一个 Zip,而无需执行中间提取到磁盘的操作。

到目前为止我有:

from zipfile import ZipFile, ZIP_DEFLATED


def stream_conents(src_zip, dst_zip, file_subset_list):
    with ZipFile(src_zip, "r", compression=ZIP_DEFLATED) as src_zip_archive:
        with ZipFile(dst_zip, "w", compression=ZIP_DEFLATED) as dst_zip_archive:
            for zitem in src_zip_archive.namelist():
                if zitem in file_subset_list:
                    zitem_object = src_zip_archive.open(zitem)
                    dst_zip_archive.write(zitem_object, zitem, )
Run Code Online (Sandbox Code Playgroud)

但它只是抛出TypeError: argument should be string, bytes or integer, not ZipExtFile

python zip archive python-3.x

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

在导入的模块中使用外部类方法

我的python应用程序包含在单个(Py)Qt GUI中组合的各种独立处理算法/模块,以便于访问.

每个处理算法都位于其自己的模块中,并且与GUI元素的所有通信都在主模块中的单个类中实现.特别地,该GUI类具有进度条(QProgressBar)对象,该对象被设计为表示所选算法的当前处理进度.该对象有.setValue()方法(self.dlg.progressBar.setValue(int)).

问题是,由于self.dlg.progressBar.setValue()是一个类方法,我不能在我导入的处理模块中使用它来在自己的代码中报告它们的进度状态.

我找到的唯一解决方法是将progressbar变量添加到每个处理模块的定义中,self.dlg.progressBar在主模块内部传递,然后progressbar.setValue(%some_processing_var%)在处理模块内盲目调用.

这是在导入模块中使用外部类方法的唯一方法还是有更好的方法?

python qt module class pyqt

3
推荐指数
1
解决办法
86
查看次数

os.path.join() 的简短方法

我真的厌倦了os.path.join()每次必须构建一条路径时都要打字,我正在考虑定义一个像这样的快捷方式:

def pj(*args):
    from os.path import join
    return join(args)
Run Code Online (Sandbox Code Playgroud)

但它抛出TypeError: join() argument must be str or bytes, not 'tuple'

所以我想知道传递参数的正确方法是什么os.path.join(),总而言之,我是否试图重新发明轮子?

python python-2.7 python-3.x os.path

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

使用正则表达式查找、舍入和替换字符串中的数字

我有一个带有多个坐标的字符串,每个坐标都有15(和 16)位精度。该字符串如下所示:

POLYGON ((63.3143749208534741 58.716055226046571,63.406105383130274 58.6706773671378561,63.4052744833828112 58.670392586236112, ...))

我的目标是输出相同的字符串,但坐标四舍五入为严格的13 位精度。

POLYGON ((63.3143749208535 58.7160552260466,63.4061053831303 58.6706773671379,63.4052744833828 58.6703925862361,...

我想可以用正则表达式来完成,但我不明白该怎么做。

熟悉使用python re 模块的人可以解释一下吗?

python regex python-2.7 python-3.x

0
推荐指数
1
解决办法
471
查看次数