相关疑难解决方法(0)

了解切片表示法

我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).

对我来说,这种符号需要一点点提升.

它看起来非常强大,但我还没有完全了解它.

python iterable list slice

3024
推荐指数
33
解决办法
159万
查看次数

Python相当于find2perl

Perl有一个名为find2perl的可爱小实用工具,它将(非常忠实地)将Unix find实用程序的命令行转换为Perl脚本来执行相同操作.

如果您有这样的find命令:

find /usr -xdev -type d -name '*share'

                         ^^^^^^^^^^^^  => name with shell expansion of '*share'
                 ^^^^ => Directory (not a file)
           ^^^ => Do not go to external file systems
     ^^^ => the /usr directory (could be multiple directories
Run Code Online (Sandbox Code Playgroud)

它找到share以下结尾的所有目录/usr

现在运行find2perl /usr -xdev -type d -name '*share'它会发出一个Perl脚本来做同样的事情.然后,您可以修改脚本以供您使用.

Python os.walk()当然具有所需的功能,递归目录列表,但存在很大差异.

以简单的find . -type f -print方式查找并打印当前目录下的所有文件.一个天真的实现使用os.walk()将是:

for path, dirs, files in os.walk(root):
    if files: …
Run Code Online (Sandbox Code Playgroud)

python find os.walk

14
推荐指数
1
解决办法
1306
查看次数

忽略os.walk()中的目录?

我想忽略我的os.walk()中的一些目录.

我做:

folders_to_ignore = ['C:\\Users\\me\\AppData\\'];
def find_files(directory, pattern):
for root, dirs, files in os.walk(directory):
    dir[:] = [d for d in dirs if not is_folder_to_ignore(d)];
    for basename in files:
        if fnmatch.fnmatch(basename, pattern):
            filename = os.path.join(root, basename)
            print("filename=" + filename);
Run Code Online (Sandbox Code Playgroud)

我明白了:

  File "C:\Users\me\workspaces\pythonWS\FileUtils\findfiles.py", line 29, in find_files
  dir[:] = [d for d in dirs if not is_folder_to_ignore(d)];
Run Code Online (Sandbox Code Playgroud)

TypeError:'builtin_function_or_method'对象不支持项目分配

有任何想法吗?

谢谢.

python

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

使用Python移动特定的文件类型

我知道这对你们中的许多人来说将是一件令人沮丧的事情。我刚刚开始学习Python,并需要一些基本文件处理方面的帮助。

我拍摄了很多屏幕快照,这些屏幕快照最终出现在桌面上(因为这是默认设置)。我知道我可以更改屏幕快照设置以自动将其保存在其他位置。但是,我认为该程序将是教我如何对文件进行排序的好方法。我想使用python自动排序桌面上的所有文件,识别以.png结尾的文件(屏幕快照的默认文件类型),然后将其移动到我名为“ Archive”的文件夹中。

到目前为止,这是我得到的:

import os
import shutil
source = os.listdir('/Users/kevinconnell/Desktop/Test_Folder/')
destination = 'Archive'
for files in source:
    if files.endswith('.png'):
        shutil.move(source, destination)
Run Code Online (Sandbox Code Playgroud)

我已经玩了很多,但没有用。在此最新版本中,运行程序时遇到以下错误:

追溯(最近一次通话最近):在shutil.move(源,目标)中的文件“ pngmove_2.0.py”,第23行,文件“ /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2”。 7 / shutil.py“,行290,在移动TypeError:强制转换为Unicode:需要字符串或缓冲区,找到列表

我的印象是我对源和目标所必需的正确约定/语法有某种疑问。但是,到目前为止,我仍然无法找到有关如何修复它的帮助。我使用os.path.abspath()来确定您在上面看到的文件路径。

在此先感谢您为保持我的理智提供的任何帮助。

最新更新

我相信我已经非常接近这个问题了。我敢肯定,如果我继续玩下去,我会解决的。以便一直在帮助我的每个人都得到更新...

这是我正在使用的当前代码:

import os
import shutil
sourcepath ='/Users/kevinconnell/Desktop/'
source = os.listdir(sourcepath)
destinationpath = '/Users/kevinconnell/Desktop/'
for files in source:
    if files.endswith('.png'):
        shutil.move(os.path.join(sourcepath,'Test_Folder'), os.path.join(destinationpath,'Archive'))
Run Code Online (Sandbox Code Playgroud)

这可以将我的“ Test_Folder”文件夹重命名为“ Archive”。但是,它将移动文件夹中的所有文件,而不是移动以'.png'结尾的文件。

python file-io python-2.7

5
推荐指数
2
解决办法
8008
查看次数

Python os.walk跳过具有特定名称而不是路径的目录

所以我有一个文件系统,我希望能够使用python检查和更新.我的解决方案是os.walk但是我的需求和我的文件系统会出现问题.这是目录的布局方式:

Root
dir1
    subdir
        1
        2
        3...
    file1
    file2
dir2
    subdir
        1
        2
        3...
    file1
    file2
...
Run Code Online (Sandbox Code Playgroud)

主目录有不同的名称,因此"dir1"和"dir2"但其中的目录具有相同的名称,并包含许多不同的文件和目录.子目录是我想从os.walk中排除的,因为它们添加了不必要的计算.

有没有办法根据目录的名称而不是路径从os.walk中排除目录,还是我需要做其他事情?

python os.walk

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

标签 统计

python ×5

os.walk ×2

file-io ×1

find ×1

iterable ×1

list ×1

python-2.7 ×1

slice ×1