我已经创建了一个简单的脚本来重命名我的媒体文件,这些媒体文件中包含很多奇怪的时期以及我已经获得并且想要进一步组织的东西。 我的脚本还行得通,我将对其进行编辑以进一步编辑文件名,但是我的os.rename行抛出此错误:

[Windows错误:错误2:系统找不到指定的文件。]

import os
for filename in os.listdir(directory):
    fcount = filename.count('.') - 1              #to keep the period for the file extension
    newname = filename.replace('.', ' ', fcount)
    os.rename(filename, newname)

有谁知道为什么会这样吗? 我有种感觉,我不喜欢尝试在不包含文件路径的情况下重命名文件吗?

#1楼 票数:1 已采纳

尝试

os.rename(filename, directory + '/' + newname);

#2楼 票数:1

Triton Man已经回答了您的问题。 如果他的答案不起作用,我将尝试使用绝对路径而不是相对路径。

我之前做过类似的事情,但是为了避免发生名称冲突,我将所有文件临时移到了子文件夹中。 整个过程进行得如此之快,以至于在Windows资源管理器中我从未看到过创建子文件夹。

无论如何,如果您有兴趣查看我的脚本,如下所示。 您在命令行上运行脚本,并且应将要重命名的jpg文件的目录作为命令行参数传递。

这是我用来将.jpg文件重命名为10的倍数的脚本。看一下它可能很有用。

'''renames pictures to multiples of ten'''
import sys, os

debug=False

try:
    path = sys.argv[1]
except IndexError:
    path = os.getcwd()

def toint(string):
    '''changes a string to a numerical representation
    string must only characters with an ordianal value between 0 and 899'''
    string = str(string)
    ret=''
    for i in string:
        ret += str(ord(i)+100) #we add 101 to make all the numbers 3 digits making it easy to seperate the numbers back out when we need to undo this operation
    assert len(ret) == 3 * len(string), 'recieved an invalid character. Characters must have a ordinal value between 0-899'
    return int(ret)

def compare_key(file):
    file = file.lower().replace('.jpg', '').replace('dscf', '')
    try:
        return int(file)
    except ValueError:
        return toint(file)

#files are temporarily placed in a folder
#to prevent clashing filenames
i = 0
files = os.listdir(path)
files = (f for f in files if f.lower().endswith('.jpg'))
files = sorted(files, key=compare_key)
for file in files:
    i += 10
    if debug: print('renaming %s to %s.jpg' % (file, i))
    os.renames(file, 'renaming/%s.jpg' % i)

for root, __, files in os.walk(path + '/renaming'):
    for file in files:
        if debug: print('moving %s to %s' % (root+'/'+file, path+'/'+file))
        os.renames(root+'/'+file, path+'/'+file)

编辑:我摆脱了所有的jpg绒毛。 您可以使用此代码来重命名文件。 只需更改rename_file函数即可消除多余的点。 我尚未测试此代码,因此可能无法正常工作。

import sys, os

path = sys.argv[1]

def rename_file(file):
    return file

#files are temporarily placed in a folder
#to prevent clashing filenames
files = os.listdir(path)
for file in files:
    os.renames(file, 'renaming/' + rename_file(file))

for root, __, files in os.walk(path + '/renaming'):
    for file in files:
        os.renames(root+'/'+file, path+'/'+file)

#3楼 票数:0

看起来我只需要设置默认目录,它就可以正常工作。

folder = r"blah\blah\blah"    
os.chdir(folder)
for filename in os.listdir(folder):
    fcount = filename.count('.') - 1
    newname = filename.replace('.', ' ', fcount)
    os.rename(filename, newname)

  ask by Ben Ference translate from so

未解决问题?本站智能推荐:

1回复

如果文件存在,wordpress媒体上传以适当地重命名文件

我正在wordpress中创建一个插件,该插件使用wp媒体上传器将文件上传到站点。 问题是,如果存在一个具有相同名称的文件,则当前正在上传的文件的名称会在末尾附加一个数字。 如果我上传file001.pdf,然后将下一个文件重命名为file0012.pdf而不是file001-2.pdf
2回复

批量重命名目录中的每5个文件

我有500个文件的目录,需要批量重命名。 这些文件是通过Google驱动器表单收集的,申请人在该表单中提交了5个标有以下内容的个人文件: 我想将上述文件名批量重命名为(从目录顶部开始按字母顺序): 我尝试使用此处的问题作为参考,但是我无法理解如何重命名每五个文件。 任何帮助将
14回复

批量重命名目录中的文件

是否有一种简单的方法可以使用 Python 重命名已包含在目录中的一组文件? 示例:我有一个充满 *.doc 文件的目录,我想以一致的方式重命名它们。 X.doc -> "new(X).doc" Y.doc -> "new(Y).doc"
2回复

在Python中重命名文件:WindowsError:[错误2]系统找不到指定的文件

我在这里看过代码,看起来并不难。 无法解决WindowsError:[错误2]系统找不到指定的文件 但是,对于我而言,它不起作用。 我在这里对Python很陌生。 我重命名了文件夹而不是文件。 然后,这些文件夹中的每个文件夹都有一些文件也需要重命名。 到目前为止,这是我重
1回复

如何批量重命名文件?

我有这种格式的数百个文件,只有一个文档编号: 我想为所有这些添加描述。 我已经准备了所有新的txt文件名。 如何使用Python批量重命名它们? 所需的输出: 我是编程新手,上面的代码抛出如下错误,我找不到问题所在。 最后,通过以下朋友的举止,我得到了预期的
1回复

批量重命名文件

这是我的示例代码,用于将文件夹中的文件重命名为连续的数字(0、1、2、3 ....),并将它们写入文本文件中: 如果我有一个带有这些行的文本文件: 我想在这样的每一行中的“ -opdut_decoded.wav”之后写下新名称: 请通过示例指导我。
3回复

遵循特定规则批量重命名目录中的文件

有没有一种简单的方法可以使用Python以这种特定方式重命名目录中已经包含的文件? 我的目录中充满了像这样的图像 我想将它们重命名为
2回复

重命名目录中的文件时使用If-Else

我正在开发一个脚本来重命名给定目录中的文件。 鉴于编程的迭代性质,我希望使用“ if-else”方法来确保可以忽略已经正确标记的文件。 但是,我收到以下错误,这似乎表明我的if-else条件语句没有让我已经被重命名的旁路条目。 如下所示,以前重命名的文件“樱桃”似乎阻止了进一步的重