返回顶部
首页 > 资讯 > 后端开发 > Python >Python os.path.exists()函数总是返回false的解决方案
  • 581
分享到

Python os.path.exists()函数总是返回false的解决方案

2024-04-02 19:04:59 581人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

如下面所示,如果我们用file的readline或readlines,在每一行后面都有一个\n回车符 直接os.path.exists(readline)时总会返回false &

如下面所示,如果我们用file的readline或readlines,在每一行后面都有一个\n回车符

直接os.path.exists(readline)时总会返回false


>>> from os.path import exists
>>> exists('dog.png')
True
>>> exists('dog.png\n')
False

使用item.strip('\n') #前面的item为我定义的变量

去掉后再传递给os.path.exists(item) 就OK了。

补充:当os.path.exists(path)的path中包含有空格时返回结果为False的解决方案

之前有个问题一直没有解决, 当路径中或文件名中存在空格时,用os.path.exists(path)判断是否存在时,都会返回False. 百思不得其解. 今天在用ipython偶到想到想了解一下到底是什么原因?

事实上,当用input()接收path输入时,path中有空格时,生成的str是不一样的. 如下:


In [4]: path = input('请将文件拖入:')

请将文件拖入:"C:\Users\xxxxx\Desktop\filename with space.txt"


In [5]: path
Out[5]: '"C:\\Users\\xxxxx\\Desktop\\filename with space.txt"'
 
In [6]: path1 = input('请将文件拖入:')

请将文件拖入:C:\Users\xxxxx\Desktop\filenamewithspace.txt


In [7]: path1
Out[7]: 'C:\\Users\\xxxxx\\Desktop\\filenamewithspace.txt'
 
In [8]: os.path.exists(path)
Out[8]: False
 
In [9]: os.path.exists(path1)
Out[9]: True

很明显,带有space时生了的str多了一层""字符串,故将多余的""去掉应该就可以了.以下为验证实例


In [10]: path2 = path.replace('\"', '')
 
In [11]: path2
Out[11]: 'C:\\Users\\xxxxx\\Desktop\\filename with space.txt'
 
In [12]: os.path.exists(path2)
Out[12]: True

当前读取手机存储空间的文件时,当手机root目录中存在还中文或带空格的文件/文件夹时(如下图),就会出错.

一般这时为了要读出这些文件夹,一般的操作为:


In [23]: cmd = 'adb shell ls /sdcard/'
 
In [24]: file_list = os.popen(cmd).readlines()
---------------------------------------------------------------------------
UnicodeDecodeError            Traceback (most recent call last)
<iPython-input-24-b7ae01065f81> in <module>
----> 1 file_list = os.popen(cmd).readlines()
 
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 10: illegal multibyte sequence

一般会报以上的错误或是不报错,但是中文文件/文件名可能为乱码,从以下的help(os.popen)可以了解后,os.popen()也是不能设置encode方式的,无解哈.


In [25]: help(os.open)
Help on built-in function open in module nt:
 
open(path, flags, mode=511, *, dir_fd=None)
  Open a file for low level IO. Returns a file descriptor (integer).
 
  If dir_fd is not None, it should be a file descriptor open to a directory,
   and path should be relative; path will then be relative to that directory.
  dir_fd may not be implemented on your platfORM.
   If it is unavailable, using it will raise a NotImplementedError.

所以又回到之前写的一篇文章上,要用subprocess.run()全面替换掉os.system/os.popen,这样就可以解决这些问题了.


In [27]: cmd = 'adb shell ls /sdcard/'
 
In [28]: file_list = subprocess.run(cmd, capture_output=True, encoding='utf-8', shell=True).stdout.
  ...: splitlines()
 
In [29]: file_list[0:3]
Out[29]: ['0000', '00新文件夹', '00新文件夹 test']

故上两个困扰了很久的问题,终于找到了解决方案,开心一下

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

--结束END--

本文标题: Python os.path.exists()函数总是返回false的解决方案

本文链接: https://lsjlt.com/news/121720.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python os.path.exists()函数总是返回false的解决方案
    如下面所示,如果我们用file的readline或readlines,在每一行后面都有一个\n回车符 直接os.path.exists(readline)时总会返回false &...
    99+
    2024-04-02
  • 在Python中使用os.path.exists()函数时返回false如何解决
    在Python中使用os.path.exists()函数时返回false如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。如下面所示,如果我们用file的readlin...
    99+
    2023-06-14
  • java删除文件时总是返回false,删不掉的解决方案
    目录java删除文件时总是返回false,删不掉我的解决java文件删除不了的坑,特别是压缩文件下面列举一些情况java.util.zip.ZipFile.close()方法关闭ZI...
    99+
    2024-04-02
  • java file.renameTo返回false的原因及解决方案
    java file.renameTo返回false原因 需要对文件夹下的文件重命名,发现返回false了,先用main方法测试,发现没问题,如下 public static vo...
    99+
    2024-04-02
  • Postman返回中文乱码的解决方案
    目录问题如下:解决方案 IDEA中在网上找了很多资料,但是一直没有实际效果,现在终于搞定 问题如下:   用的post请求,然后入参格式为json 并且入参中...
    99+
    2024-04-02
  • python函数返回多个值的方法
    这篇文章主要介绍“python函数返回多个值的方法”,在日常操作中,相信很多人在python函数返回多个值的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python函数返回多个值的方法”的疑惑有所帮助!...
    99+
    2023-06-20
  • C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案
    有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用。但在PL/SQL中正常调用返回。 于是动手一试: 准备函数(Oralce 11g.2.0.0.4) CREATE OR REPLACE FUNCTION F_Upd...
    99+
    2019-11-23
    C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案
  • Python函数的返回值与嵌套函数是什么
    这篇文章主要介绍“Python函数的返回值与嵌套函数是什么”,在日常操作中,相信很多人在Python函数的返回值与嵌套函数是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python函数的返回值与嵌套函数...
    99+
    2023-06-02
  • python中返回函数的作用是什么
    这期内容当中小编将会给大家带来有关python中返回函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无...
    99+
    2023-06-14
  • python find函数找不到返回值怎么解决
    如果find()函数在字符串中找不到匹配的子字符串,它将返回-1。要解决这个问题,你可以在使用find()函数之前先使用in关键字进...
    99+
    2023-10-18
    python
  • 微信小程序页面返回传值的4种解决方案汇总
    目录使用场景解决方案1、使用globalData实现2、使用本地缓存Storage实现3、使用小程序的Page页面栈实现4、使用wx.navigateTo API的events实现总...
    99+
    2024-04-02
  • python中函数返回值的作用是什么
    python中函数返回值的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyt...
    99+
    2023-06-14
  • python的函数形参和返回值是什么
    这篇文章主要介绍了python的函数形参和返回值是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python的函数形参和返回值是什么文章都会有所收获,下面我们一起来看看吧。函数的返回值一个函数执行后可以返回...
    99+
    2023-06-29
  • PHP接口无法返回JSON格式数据的解决方案
    PHP接口无法返回JSON格式数据的解决方案 在开发过程中,我们经常会遇到需要使用PHP接口返回JSON格式数据的情况。然而,有时候可能会遇到无法正确返回JSON格式数据的问题。本文将...
    99+
    2024-03-12
    解决方案 php接口 json数据 php编写
  • python中函数的返回值及类型详解
    目录1.返回值介绍2.带有返回值的函数3.保存函数的返回值4.四种函数的类型1.无参数,无返回值的函数2.无参数,有返回值的函数3.有参数,无返回值的函数4.有参数,有返回值的函数5...
    99+
    2023-05-14
    python函数返回值 python 返回值类型
  • mybatis-plus返回查询总记录数的方法是什么
    这篇“mybatis-plus返回查询总记录数的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatis-pl...
    99+
    2023-06-26
  • python的函数形参和返回值你了解吗
    目录函数的返回值函数的参数不可变参数和可变参数+=函数的参数缺省参数多值参数元组和字典的拆包总结函数的返回值 一个函数执行后可以返回多个返回值 def measure(): ...
    99+
    2024-04-02
  • PHP返回非JSON格式数据的可能原因与解决方案
    PHP返回非JSON格式数据的可能原因与解决方案 在开发Web应用程序时,经常会使用PHP作为后端语言来处理数据并将其返回给前端页面。通常情况下,我们会选择将数据以JSON格式返回给前...
    99+
    2024-03-13
    数据 php json
  • C++返回函数指针的定义方式是什么
    这篇文章主要介绍“C++返回函数指针的定义方式是什么”,在日常操作中,相信很多人在C++返回函数指针的定义方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++返回函数指针的定义方式是什么”的疑惑有所...
    99+
    2023-06-04
  • 解析Mybatis的insert方法返回数字-2147482646的解决
    前言:前几天在做项目demo的时候,发现有一个很奇怪的现象,就是MyBatis发现更新和插入返回值一直为"-2147482646".无论怎么改,这个值一直不变...是在摸不着头脑,百...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作