精华内容
下载资源
问答
  • Python os.rename和os.renames用法的区别1. 前言2. os.rename 和os.renames()2.1 官方的文档2.2 用法比较2.2.1 os.rename(oldpath,newpath)2.2.2 os.renames(oldpath, newpath)3. 小结4. 参考文献 1. 前言 今天看了...

    1. 前言

    今天看了os和os.path模块的官方文档,其中os.rename()和os.renames()刚开始没有整明白到底啥区别,接着自己点进去看源码,再结合了几篇技术博客和实践,算是对于os.rename和os.renames的使用有了基本了解,特地纪录下,方便日后查看。如果有理解不当的地方,还请大家指出交流。

    2. os.rename 和os.renames()

    2.1 官方的文档

    • os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
      Rename the file or directory src to dst. If dst exists, the operation will fail with an OSError subclass in a number of cases.

    • os.renames(old, new)
      Recursive directory or file renaming function. Works like rename(), except creation of any intermediate directories needed to make the new pathname good is attempted first. After the rename, directories corresponding to rightmost path segments of the old name will be pruned away using removedirs().
      注解 This function can fail with the new directory structure made if you lack permissions needed to remove the leaf directory or file.
      看完英文文档,一开始还是不明白os.renames()到底怎么递归,怎么用的。
      接下来看看源码,发现os.renames调用rename(),只不过在调用之前,用的是makedirs()递归创建目录。所以本质上os.renames()应该是通过makedirs()来实现递归的。

    def renames(old, new):
        head, tail = path.split(new)
        if head and tail and not path.exists(head):
            makedirs(head)
        rename(old, new)
        head, tail = path.split(old)
        if head and tail:
            try:
                removedirs(head)
            except OSError:
                pass
    

    2.2 用法比较

    再说用法前,为了方便表述准确,我们学习一下os.path.split()方法
    看源码:

    def split(p):
        """Split a pathname.
    
        Return tuple (head, tail) where tail is everything after the final slash.
        Either part may be empty."""
        p = os.fspath(p)
        seps = _get_bothseps(p)
        d, p = splitdrive(p)
        # set i to index beyond p's last slash
        i = len(p)
        while i and p[i-1] not in seps:
            i -= 1
        head, tail = p[:i], p[i:] # now tail has no slashes
        # remove trailing slashes from head, unless it's all slashes
        head = head.rstrip(seps) or head
        return d + head, tail
    

    官方说明:

    • os.path.split(path)
      Split the pathname path into a pair, (head, tail) where tail is the last pathname component and head is everything leading up to that. The tail part will never contain a slash; if path ends in a slash, tail will be empty. If there is no slash in path, head will be empty. If path is empty, both head and tail are empty. Trailing slashes are stripped from head unless it is the root (one or more slashes only). In all cases, join(head, tail) returns a path to the same location as path (but the strings may differ). Also see the functions dirname() and basename().

    翻译过来就是说,os.path.split()的功能是把给定的一个路径pathname,以最后一个斜线作为分分隔符,得到一个(head, tail),即(头, 尾)的元组。

    • 如果pathname中没有斜线,则head为空;
    • 如果pathname最后以斜线结尾,则tail为空;
    • 如果pathname为空,则head和tail都是空。
      比如:
    >>> import os
    >>> os.path.split('C:/a/b/c.text')
    ('C:/a/b', 'c.text')
    >>> os.path.split('C:/a/b')
    ('C:/a', 'b')
    >>> os.path.split('C:/a/')
    ('C:/a', '')
    >>> os.path.split('c.text')
    ('', 'c.text')
    >>> os.path.split('')
    ('', '')
    

    理解了os.path.split()的用法,明确了head和tail的概念,接下来我们就进入os.rename()和os.path.renames()用法上的比较:

    2.2.1 os.rename(oldpath,newpath)

    oldpath(oldhead, oldtail)
    newpath(newhead, newtail)
    对于os.rename(oldpath, newpath)而言,它的功能本质是有点像把文件oldtail(文件夹或者文件均可)移到newhead文件夹下并重命名为newtail(文件或者文件夹)。它只可以更改oldtail部分,不能更改oldhead部分,即不可以更改上级目录部分。

    1. 如果oldhead或者newhead不存在,均会报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    2. 如果oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。
    3. 如果newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

    示例:C:\Users\Jock\Desktop\test\1.jpg

    # 重命名test文件夹 为test_a
    >>> os.rename(r'C:\Users\Jock\Desktop\test', r'C:\Users\Jock\Desktop\test_a')  
    # 重命名1.jpg文件为2.jpg
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')  
    # newhead不存在,报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_b\2.jpg')
    FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_b\\2.jpg' 
    # oldhead不存在,报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    >>> os.rename(r'C:\Users\Jock\Desktop\test\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\Jock\\Desktop\\test\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # 重新复制一张1.jpg文件到C:\Users\Jock\Desktop\test_a路径下,现在test_a包含1.jpg和2.jpg
    # newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')
    FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg'
    

    2.2.2 os.renames(oldpath, newpath)

    oldpath(oldhead, oldtail)
    newpath(newhead, newtail)
    对于os.renames(oldpath, newpath)而言,它可以只更改oldtail部分,也可以只更改oldhead部分,还可以同时更改oldhead和oldtail,对于newpath的newhead没有限制,只要有权限访问,如果newhead不存在,直接创建。

    1. 如果oldhead不存在,会报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    2. 如果oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。
    3. 如果newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

    示例:C:\Users\Jock\Desktop\test\1.jpg

    # 重命名test文件夹 为test_a
    >>> os.renames(r'C:\Users\Jock\Desktop\test', r'C:\Users\Jock\Desktop\test_a')
    # 重命名1.jpg文件为2.jpg
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')
    # newhead不存在,直接创建newhead然后重命名,这里相当于修改了目录,文件名没有变
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_b\2.jpg')
    # 同时修改目录和文件名
    >>> os.renames(r'C:\Users\Jock\Desktop\test_b\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    # 如果oldhead不存在,会报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    >>> os.renames(r'C:\Users\Jock\Desktop\test_b\1.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\Jock\\Desktop\\test_b\\1.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # 重新复制一张1.jpg文件到C:\Users\Jock\Desktop\test_a路径下,现在test_a包含1.jpg和2.jpg
    # 如果newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')
    Traceback (most recent call last):
    FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg'
    

    3. 小结

    1. os.path.split(path), 是把path以最后一个斜线为分隔符,切割为head和tail,以(head, tail)元组的形势返回。
    2. os.rename(oldpath, newpath),它是只能重命名最后的tail部分,不能对head部分进行修改。tail的上级目录无法被修改,且无法创建新的目录。
    3. os.renames(oldpath, newpath),它既可以重命名tail部分,也可以修改head部分,还可以创建新的目录。
    4. 如果newpath已经存在,那么os.rename()和os.renames()都会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

    4. 参考文献

    1. os — 操作系统接口模块
    2. os.path — 常见路径操作
    3. 学习python之 os.rename VS os.renames

    后记:
    我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
    2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
    如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技,扫描下方二维码或者搜索每日学一技关注。
    这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!
    每日学一技

    展开全文
  • os.renames()

    2020-10-28 15:50:10
    os.renames() 方法用于递归重命名目录或文件。类似rename()。 语法 renames()方法语法格式如下: os.renames(old, new) 参数 old – 要重命名的目录 new --文件或目录的新名字。甚至可以是包含在目录中的文件,或者...

    概述
    os.renames() 方法用于递归重命名目录或文件。类似rename()。

    语法
    renames()方法语法格式如下:

    os.renames(old, new)
    参数
    old – 要重命名的目录

    new --文件或目录的新名字。甚至可以是包含在目录中的文件,或者完整的目录树。

    返回值
    该方法没有返回值

    举例:将文件夹下每个文件名后四位去掉

    def delete_png():
        # path为批量文件的文件夹的路径
        path = r'C:/xian_ir_pos'
    
        # 文件夹中所有文件的文件名
        file_names = os.listdir(path)
    
        # 外循环遍历所有文件名,内循环遍历每个文件名的每个字符
        for name in file_names:
            new_name = name[:-4]
            # 采用字符串的切片方式删除编号
            os.renames(os.path.join(path, name), os.path.join(path, new_name))
    
    展开全文
  • Python os.rename和os.renames用法的区别 1. 前言2. os.rename 和os.renames()2.1 官方的文档2.2 用法比较2.2.1 os.rename(oldpath,newpath)2.2.2 os.renames(oldpath, newpath) 3. 小结4. 参考文献 1. ...

    1. 前言

    今天看了os和os.path模块的官方文档,其中os.rename()和os.renames()刚开始没有整明白到底啥区别,接着自己点进去看源码,再结合了几篇技术博客和实践,算是对于os.rename和os.renames的使用有了基本了解,特地纪录下,方便日后查看。如果有理解不当的地方,还请大家指出交流。

    2. os.rename 和os.renames()

    2.1 官方的文档

    • os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
      Rename the file or directory src to dst. If dst exists, the operation will fail with an OSError subclass in a number of cases.

    • os.renames(old, new)
      Recursive directory or file renaming function. Works like rename(), except creation of any intermediate directories needed to make the new pathname good is attempted first. After the rename, directories corresponding to rightmost path segments of the old name will be pruned away using removedirs().
      注解 This function can fail with the new directory structure made if you lack permissions needed to remove the leaf directory or file.
      看完英文文档,一开始还是不明白os.renames()到底怎么递归,怎么用的。
      接下来看看源码,发现os.renames调用rename(),只不过在调用之前,用的是makedirs()递归创建目录。所以本质上os.renames()应该是通过makedirs()来实现递归的。

    def renames(old, new):
        head, tail = path.split(new)
        if head and tail and not path.exists(head):
            makedirs(head)
        rename(old, new)
        head, tail = path.split(old)
        if head and tail:
            try:
                removedirs(head)
            except OSError:
                pass
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.2 用法比较

    再说用法前,为了方便表述准确,我们学习一下os.path.split()方法
    看源码:

    def split(p):
        """Split a pathname.
    
    Return tuple (head, tail) where tail is everything after the final slash.
    Either part may be empty."""</span>
    p <span class="token operator">=</span> os<span class="token punctuation">.</span>fspath<span class="token punctuation">(</span>p<span class="token punctuation">)</span>
    seps <span class="token operator">=</span> _get_bothseps<span class="token punctuation">(</span>p<span class="token punctuation">)</span>
    d<span class="token punctuation">,</span> p <span class="token operator">=</span> splitdrive<span class="token punctuation">(</span>p<span class="token punctuation">)</span>
    <span class="token comment"># set i to index beyond p's last slash</span>
    i <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>p<span class="token punctuation">)</span>
    <span class="token keyword">while</span> i <span class="token operator">and</span> p<span class="token punctuation">[</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">not</span> <span class="token keyword">in</span> seps<span class="token punctuation">:</span>
        i <span class="token operator">-=</span> <span class="token number">1</span>
    head<span class="token punctuation">,</span> tail <span class="token operator">=</span> p<span class="token punctuation">[</span><span class="token punctuation">:</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> p<span class="token punctuation">[</span>i<span class="token punctuation">:</span><span class="token punctuation">]</span> <span class="token comment"># now tail has no slashes</span>
    <span class="token comment"># remove trailing slashes from head, unless it's all slashes</span>
    head <span class="token operator">=</span> head<span class="token punctuation">.</span>rstrip<span class="token punctuation">(</span>seps<span class="token punctuation">)</span> <span class="token operator">or</span> head
    <span class="token keyword">return</span> d <span class="token operator">+</span> head<span class="token punctuation">,</span> tail
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    官方说明:

    • os.path.split(path)
      Split the pathname path into a pair, (head, tail) where tail is the last pathname component and head is everything leading up to that. The tail part will never contain a slash; if path ends in a slash, tail will be empty. If there is no slash in path, head will be empty. If path is empty, both head and tail are empty. Trailing slashes are stripped from head unless it is the root (one or more slashes only). In all cases, join(head, tail) returns a path to the same location as path (but the strings may differ). Also see the functions dirname() and basename().

    翻译过来就是说,os.path.split()的功能是把给定的一个路径pathname,以最后一个斜线作为分分隔符,得到一个(head, tail),即(头, 尾)的元组。

    • 如果pathname中没有斜线,则head为空;
    • 如果pathname最后以斜线结尾,则tail为空;
    • 如果pathname为空,则head和tail都是空。
      比如:
    >>> import os
    >>> os.path.split('C:/a/b/c.text')
    ('C:/a/b', 'c.text')
    >>> os.path.split('C:/a/b')
    ('C:/a', 'b')
    >>> os.path.split('C:/a/')
    ('C:/a', '')
    >>> os.path.split('c.text')
    ('', 'c.text')
    >>> os.path.split('')
    ('', '')
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    理解了os.path.split()的用法,明确了head和tail的概念,接下来我们就进入os.rename()和os.path.renames()用法上的比较:

    2.2.1 os.rename(oldpath,newpath)

    oldpath(oldhead, oldtail)
    newpath(newhead, newtail)
    对于os.rename(oldpath, newpath)而言,它的功能本质是有点像把文件oldtail(文件夹或者文件均可)移到newhead文件夹下并重命名为newtail(文件或者文件夹)。它只可以更改oldtail部分,不能更改oldhead部分,即不可以更改上级目录部分。

    1. 如果oldhead或者newhead不存在,均会报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    2. 如果oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。
    3. 如果newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

    示例:C:\Users\Jock\Desktop\test\1.jpg

    # 重命名test文件夹 为test_a
    >>> os.rename(r'C:\Users\Jock\Desktop\test', r'C:\Users\Jock\Desktop\test_a')  
    # 重命名1.jpg文件为2.jpg
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')  
    # newhead不存在,报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_b\2.jpg')
    FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_b\\2.jpg' 
    # oldhead不存在,报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    >>> os.rename(r'C:\Users\Jock\Desktop\test\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\Jock\\Desktop\\test\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # 重新复制一张1.jpg文件到C:\Users\Jock\Desktop\test_a路径下,现在test_a包含1.jpg和2.jpg
    # newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件
    >>> os.rename(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')
    FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg'
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.2.2 os.renames(oldpath, newpath)

    oldpath(oldhead, oldtail)
    newpath(newhead, newtail)
    对于os.renames(oldpath, newpath)而言,它可以只更改oldtail部分,也可以只更改oldhead部分,还可以同时更改oldhead和oldtail,对于newpath的newhead没有限制,只要有权限访问,如果newhead不存在,直接创建。

    1. 如果oldhead不存在,会报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    2. 如果oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。
    3. 如果newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

    示例:C:\Users\Jock\Desktop\test\1.jpg

    # 重命名test文件夹 为test_a
    >>> os.renames(r'C:\Users\Jock\Desktop\test', r'C:\Users\Jock\Desktop\test_a')
    # 重命名1.jpg文件为2.jpg
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')
    # newhead不存在,直接创建newhead然后重命名,这里相当于修改了目录,文件名没有变
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_b\2.jpg')
    # 同时修改目录和文件名
    >>> os.renames(r'C:\Users\Jock\Desktop\test_b\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    # 如果oldhead不存在,会报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。
    >>> os.renames(r'C:\Users\Jock\Desktop\test_b\1.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\Jock\\Desktop\\test_b\\1.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # oldhead存在,oldtail不存在时,报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\2.jpg', r'C:\Users\Jock\Desktop\test_a\1.jpg')
    FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg'
    # 重新复制一张1.jpg文件到C:\Users\Jock\Desktop\test_a路径下,现在test_a包含1.jpg和2.jpg
    # 如果newhead存在,newtail存在,会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件
    >>> os.renames(r'C:\Users\Jock\Desktop\test_a\1.jpg', r'C:\Users\Jock\Desktop\test_a\2.jpg')
    Traceback (most recent call last):
    FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'C:\\Users\\Jock\\Desktop\\test_a\\1.jpg' -> 'C:\\Users\\Jock\\Desktop\\test_a\\2.jpg'
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3. 小结

    1. os.path.split(path), 是把path以最后一个斜线为分隔符,切割为head和tail,以(head, tail)元组的形势返回。
    2. os.rename(oldpath, newpath),它是只能重命名最后的tail部分,不能对head部分进行修改。tail的上级目录无法被修改,且无法创建新的目录。
    3. os.renames(oldpath, newpath),它既可以重命名tail部分,也可以修改head部分,还可以创建新的目录。
    4. 如果newpath已经存在,那么os.rename()和os.renames()都会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

    4. 参考文献

    1. os — 操作系统接口模块
    2. os.path — 常见路径操作
    3. 学习python之 os.rename VS os.renames

    后记:
    我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
    2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
    如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技,扫描下方二维码或者搜索每日学一技关注。
    这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!
    每日学一技

    展开全文
  • 学习python之 os.rename 和 os.renames

    千次阅读 2019-02-26 15:41:22
    参考原文:...   总结: os.rename(old_file_path, new_file_path), 只能对相应的文件进行重命名, 其他的改路径啊什么的,不行。 os.renames(old_file_path, new_file_path), 是os.rename的升级版, 既...

    参考原文:https://blog.csdn.net/vola9527/article/details/72858622 

     


    总结:
    os.rename(old_file_path, new_file_path), 只能对相应的文件进行重命名
    , 其他的改路径啊什么的,不行。
    os.renames(old_file_path, new_file_path), 是os.rename的升级版, 既可以重命名文件, 也可以重命名文件的上级目录名.


    os模块提供了很多有用高效的基本函数, 其中rename是给文件重命名的, 

    os.rename(old_path, new_path)
    1测试os.rename()
    os.rename() 重命名文件
    代码示例, 可以看到, 文件file_b.txt被成功重命名为file_b.txt, 目录结构为: 

    Paste_Image.png

    运行代码: 
    重命名成功, 


    os.rename() 重命名路径

    可以看到, 仅修改上层目录, 文件名不变, 行不通.

     

    os.rename() 重命名文件+路径

    可以看到, 也行不通.

     

    2测试os.renames()
    os.renames() 重命名文件:
    成功.

    os.renames() 重命名路径:
    运行成功: 原本的 /a/file_d.txt 被重命名为 /x/file_d.txt

    os.renames() 重命名路径+文件名
    运行成功, 路径和文件都重命名成功.


    --------------------- 


     

    展开全文
  • os.rename和os.renames区别

    千次阅读 2019-02-14 15:01:13
    os.rename(old_file_path, new_file_path), 只能对相应的文件进行重命名, 不能重命名文件的...os.renames(old_file_path, new_file_path), 是os.rename的升级版, 既可以重命名文件, 也可以重命名文件的上级目录名 ...
  • 学习python之 os.rename VS os.renames

    万次阅读 2017-06-04 13:48:37
    os模块提供了很多有用高效的基本函数, 其中rename是给文件重命名的, 这个用过无数遍了, 而os.names还么有用过, 从名字推测, 应该是批量重命名的意思吧.os.rename(old_path, new_path)测试os.rename()os.rename() ...
  • os,rename(oldfilename,...os.renames(oldpathfile, newpathfile) # 修改前后的文件路径及file文件名, 可以重命名文件的路径(文件的上级目录名)及文件名 os.renames()比os.rename()的功能强大 转载于:ht...
  • os.rename() 方法用于命名文件或目录,从 src 到 dst,如果src不存在或dst是一个存在的目录, 将抛出OSError。 参考文章1:Python os.rename() 方法 参考文章2:Python os.rename() 重命名目录和文件 ...
  • os.renames(old,new) 递归重命名目录或文件。工作方式类似rename(),除了会首先创建新路径所需的中间目录。重命名后,将调用removedirs()删除旧路径中不需要的目录。 注解 如果用户没有权限删除末级的目录或文件,...
  • os.renames(old, new) 官方的解释: Super-rename; create directories as necessary and delete any left empty. Works like rename, except creation of any intermediate directories needed to make the new ...
  • 使用了os.renames函数想将C:\Users\nanxing.hu\Desktop\aa\bb修改为C:\Users\nanxing.hu\Desktop\AA\BB。但是为什么只将路径中的bb大写了,没有将aa进行大写
  • 主要介绍了python下os模块强大的重命名方法renames详解的相关资料,需要的朋友可以参考下
  • os.rename 和 renames方法的使用

    千次阅读 2015-06-12 17:14:19
    在python中有很多强大的...OS的重命名方法是os.rename,我用的ipython,这个玩意很是强大,只要按下TAB键,可以帮助我们自动对齐和列出可以使用的方法,发现有2个方法,分别是rename和renames,2个方法,前面的rename使
  • 在Python中os模块里,os.renames() 方法用于递归重命名目录或文件。这篇文章主要介绍了Python3 文件批量重命名操作示例,需要的朋友可以参考下
  • FileNotFoundError: [WinError 3] 系统找不到指定的路径 我这原因是 os.rename(f1,f2)在重新命名时候,f2的名字有‘/’,导致变成新的地址,所以显示系统找不到指定的路径 参考文章: 添加链接描述
  • OS模快 方法 功能说明 chdir(path) 把path设为当前工作目录 curdir 当前文件夹 environ 包含系统环境变量和值的字典 extsep 当前操作系统所使用的文件扩展名分隔符 get_exec_path() ...
  • 1、os.rename图片批量重命名 背景 在对文件下多个图片进行重命名的时候,os.rename(oldname, newname),报错 OSError: [WinError 123] 文件名、目录名或卷标语法不正确。 分析 ...os.renames(a,b)
  • os模块提供了访问操作系统服务的功能,由于涉及到操作系统,它包含的内容比较多,这里只说system和popen方法。 >>> import os >>> dir(os) ['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND.....
  • Python3 操作系统与路径 模块(os / os.path / pathlib)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,038
精华内容 1,215
关键字:

os.renames