python isdir(name) isfile(name) name需要是绝对路劲

本文探讨了Python中os模块的isfile()和isdir()函数返回false的问题,并给出了解决方案。通过使用os.path.join()函数组合路径,确保路径为绝对路径,解决了相对路径导致的判断错误。

这篇文章主要介绍了Python os模块中的isfile()和isdir()函数均返回false问题解决方法,返回false的原因是路径使用了相对路径,使用绝对路径就可以解决这个问题,需要的朋友可以参考下

当用os.path.isdir()来判断的时候,发现所有文件均返回false,发现用os.path.isfile(),这些文件还是返回false,这肯定就是程序写的有问题了,代码如下:

import os
Directory=raw_input("Please enter directory you want to backup:")  
dirs=os.listdir(Directory)
for filename in dirs:
  if os.path.isdir(filename):
    os.system("tar czvf "+filename+".tar.gz "+filename)

经过仔细排查,在上面的for/in循环中,filename实际上只是一个文件名。测试发现,当我使用os.path.isdir(目录的绝对路径)的时候,返回的才是true,也就是说,python的isdir()并不像php的is_dir()那样,可以使用当前工作目录的相对路径,那么这里怎么样去改进这个备份文件呢?幸好python提供了一个os.path.join()函数,自动来把需要的路径加到一块,而不用担心手动把路径字符串连接起来时,产生多余的”/”的问题,那么这个备份脚本可以这样写:

import os
Directory=raw_input("Please enter directory you want to backup:")  
dirs=os.listdir(Directory)
for filename in dirs:
  fulldirfile=os.path.join(Directory,filename)
  if os.path.isdir(fulldirfile):
    os.system("tar czvf "+fulldirfile+".tar.gz "+fulldirfile)
### `file_back = file_name.split('\\')[-1]` - **含义**:这行代码旨在从一个文件路径字符串中提取文件名。`split('\\')` 方法会依据反斜杠 `'\\'` 对 `file_name` 进行分割,由于在 Python 字符串里反斜杠有转义作用,所以要用两个反斜杠来表示一个真正的反斜杠。该方法会返回一个由分割后的子字符串构成的列表,而 `[-1]` 则是取这个列表的最后一个元素,也就是文件名。 - **作用**:常用于从文件的完整路径中提取出文件名部分,方便后续对文件名进行操作,如文件重命名、文件类型判断等。 - **示例代码**: ```python file_name = 'C:\\Users\\user\\Documents\\example.txt' file_back = file_name.split('\\')[-1] print(file_back) # 输出: example.txt ``` - **可能存在的问题**:如果 `file_name` 中不包含反斜杠,`split('\\')` 会返回一个只包含 `file_name` 本身的列表,此时 `[-1]` 取到的就是 `file_name` 本身。另外,该代码假设文件路径使用反斜杠作为分隔符,在 Linux 或 macOS 系统中,文件路径使用正斜杠 `/` 作为分隔符,代码需要修改为 `file_back = file_name.split('/')[-1]`。 ### `if os.path.isdir(file_name) is not True:` - **含义**:`os.path.isdir()` 是 Python 中 `os.path` 模块的一个函数,用于判断给定的路径是否为一个目录。`if os.path.isdir(file_name) is not True:` 即判断 `file_name` 所代表的路径不是一个目录。 - **作用**:在处理文件和目录时,需要区分操作对象是文件还是目录,该代码可用于在操作前进行判断,避免对目录执行只适用于文件的操作,或者反之。 - **示例代码**: ```python import os file_name = 'C:\\Users\\user\\Documents\\example.txt' if os.path.isdir(file_name) is not True: print(f"{file_name} 不是一个目录") ``` - **可能存在的问题**:如果 `file_name` 所代表的路径不存在,`os.path.isdir()` 会返回 `False`,但这并不意味着它一定是一个文件,也可能是路径拼写错误或者文件被删除等情况。另外,该代码在不同操作系统上可能会有路径分隔符的问题,不过 `os.path` 模块会自动处理不同操作系统的路径分隔符差异。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值