在我的脚本的主要目的完成后,作为“清理”,调用一个函数来递归查看每个文件夹并删除以预定的一组扩展名结尾的所有文件.

我在测试期间发现一些文件扩展名在删除列表中的文件实际上会抛出一个错误:[Errno 1]不允许操作:’/ location / of / locked / file.png.查看文件本身,它似乎是锁定(在Mac上).

>如何使用Python从每个文件/文件夹中删除锁定的属性(如果存在),然后删除文件,如果它在扩展名中结束?

优选地,这可以在下面的相同功能中完成,因为遍历输入目录需要很长时间 – 只需处理一次即可.

>这如何影响Windows上脚本的完整性?

我已经开始对它进行编程,使其在操作系统之间兼容,但是(据我所知),Windows上不存在锁定属性,就像它在mac上一样,并且可能导致未知的副作用.

REMOVE_FILETYPES = ('.png', '.jpg', '.jpeg', '.pdf')

def cleaner(currentPath):

if not os.path.isdir(currentPath):

if currentPath.endswith(REMOVE_FILETYPES) or os.path.basename(currentPath).startswith('.'):

try:

os.remove(currentPath)

print('REMOVED: \"{removed}\"'.format(removed = currentPath))

except BaseException as e:

print('ERROR: Could not remove: \"{failed}\"'.format(failed = str(e)))

finally:

return True

return False

if all([cleaner(os.path.join(currentPath, file)) for file in os.listdir(currentPath)]):

try:

os.rmdir(currentPath)

print('REMOVED: \"{removed}\"'.format(removed = currentPath))

except:

print('ERROR: Could not remove: \"{failed}\"'.format(failed = currentPath))

finally:

return True

return False

cleaner(r'/path/to/parent/dir')

如果有人能告诉我如何将这些功能集成到子程序中,我将非常感激.干杯.

编辑:根据请求删除错误处理

def cleaner(currentPath):

if sys.platform == 'darwin':

os.system('chflags nouchg {}'.format(currentPath))

if not os.path.isdir(currentPath):

if currentPath.endswith(REMOVE_FILETYPES) or os.path.basename(currentPath).startswith('.'):

try:

os.remove(currentPath)

print('REMOVED: \"{removed}\"'.format(removed=currentPath))

except PermissionError:

if sys.platform == 'darwin':

os.system('chflags nouchg {}'.format(currentPath))

os.remove(currentPath)

if all([cleaner(os.path.join(currentPath, file)) for file in os.listdir(currentPath)]) and not currentPath == SOURCE_DIR:

os.rmdir(currentPath)

print('REMOVED: \"{removed}\"'.format(removed=currentPath))

python文件解除占用_如何使用Python解锁锁定的文件和文件夹(mac)相关推荐

  1. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  2. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  3. python打开方式错误_浅谈python 调用open()打开文件时路径出错的原因

    昨晚搞鼓了一下python的open()打开文件 代码如下 def main(): infile =open("C:\Users\Spirit\Desktop\bc.txt",'r ...

  4. python更新excel内容_[原创]使用 Python 读写 Excel 文件(一)更新

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  5. python open找不到文件的原因_浅谈python 调用open()打开文件时路径出错的原因

    昨晚搞鼓了一下python的open()打开文件 代码如下 def main(): infile =open("C:\Users\Spirit\Desktop\bc.txt",'r ...

  6. python语言arrows用法_如何在Python中使用pyarrow读取parquet文件

    我已经从数据库中创建了一个具有三列(id.author.title)的parquet文件,并希望使用条件(title='learnpython')读取拼花板文件. 下面提到的是我用于这个POC的pyt ...

  7. python如何运行脚本_怎么执行python脚本文件

    1.脚本式编程 将如下代码拷贝至 hello.py文件中:print ("Hello, Python!");python学习网,大量的免费python视频教程,欢迎在线学习! 通过 ...

  8. python删除文件部分内容_如何在python中删除文件的一部分?

    基本上你不能从文件的开头删除东西,所以你必须写入一个新文件. 我认为pythonic方式看起来像这样: # get a iterator over the lines in the file: wit ...

  9. python创建excel文件报错_[转]用Python读写Excel文件

    大部分Windows环境的开发人员都会选择Microsoft Excel API.实际上不仅仅是Python,几乎各种语言都有相应的方法使用它,因为核心的逻辑完全是由Microsft Excel自身提 ...

最新文章

  1. PHP与SQL注入***(实战篇五)
  2. Comparator 与 Comparable
  3. mysql 平均值 排序_MySQL按平均两个平均值排序
  4. SharePoint 2007 and 2010 的服务器场的端口
  5. Dockerfile语法简介(精)
  6. 2台主机的docker互相通信的方法
  7. 技术揭秘:华为云DLI背后的核心计算引擎
  8. 递归求解斐波那契fib(10)一共调用了多少次fib()函数
  9. cad细等线体不显示_等线字体
  10. 实用的BeanUtils工具类
  11. android 连续播放动画,Android ObjectAnimator 无限循环播放,实现上下左右浮动效果...
  12. 为什么华为a1路由器网速变慢_华为路由器上网速度慢怎么办?
  13. 好了,我不想回深圳了~
  14. 2018-07-03 根据Excel后缀名获取WorkBook
  15. Oracle数据库之表空间(tablespace)---面试再也不害怕系列之一
  16. 计算机组装与维护双系统安装,给你的电脑安装一个不可见的WINPE救援系统(独立启动双系统)...
  17. 技术分享:国民远控向日葵如何通过BBR算法提升远控体验?
  18. 元素周期表的118个化学元素
  19. 使用python快速查看hdf5文件
  20. “黎明号”(Dawn)深空航天器与高效离子引擎

热门文章

  1. 直播预告 |【数据挖掘主题报告】多样流量复杂场景中智能技术的研究与应用...
  2. NLP新秀:BERT的优雅解读
  3. 使用sqoop将HIVE中的数据输出带Mysql中
  4. leetcode 1047. Remove All Adjacent Duplicates In String | 1047. 删除字符串中的所有相邻重复项(Java)
  5. 【PAT甲级 约会】1061 Dating (20 分) C++ 全部AC
  6. 【Eclipse 字符集】Eclipse在哪里设置字符集?三个位置,分别控制不同的范围
  7. 【C# 委托 Lambda表达式】一个简单的例子
  8. nodejs中的文件系统
  9. Storage API简介和存储限制与逐出策略
  10. python2.7装饰器使用_python 函数 装饰器的使用方法