Linux下要当心从Windows Copy过来的文件

本文介绍了一种常见问题:Windows下编写的Ruby脚本在Linux环境下运行时报错。问题在于不同操作系统之间的换行符差异导致。解决方案是使用tofrodos工具中的fromdos命令来清除多余的'^M'字符。

 

今天将win下的清理.svn文件的脚本copy到linux下。无论怎么执行都会报如下错误:

 

/usr/bin/ruby^M: 坏的解释器

 

Google后了解到,在Win下,行结束符是"\n\r",而linux下是"\n"。所以在win下编辑过的文件在linux下会多"\r",多的字符用gedit和vim都看不到。

 

这个问题可以使用 tofrodos 工具来解决:

 

sudo apt-get install tofrodos

 

该工具提供两个指令: todos, fromdos.

 

fromdos cleansvn.rb
 

如此之后,问题解决。

 

参考文章:

http://www.4ucode.com/Study/Topic/825621

### 删除文件的 Python 方法 在 Windows 系统中,可以使用 `os` 模块中的 `os.remove()` 函数来删除指定路径下的文件。以下是关于其用法的具体说明以及代码示例。 #### 使用 os.remove() 的基本语法 函数签名如下: ```python os.remove(path, *, dir_fd=None) ``` - 参数 `path`: 表示要删除的目标文件的绝对或相对路径字符串。 - 如果目标是一个目录而不是文件,则会抛出 `OSError` 异常[^1]。 #### 示例代码 下面展示了一个简单的例子,演示如何通过 `os.remove()` 来删除特定路径上的文件: ```python import os file_path = r"C:\example\test.txt" # 替换为实际存在的文件路径 try: os.remove(file_path) # 尝试删除文件 print(f"{file_path} 文件已成功删除.") except FileNotFoundError as e: print(f"错误: {e}. 文件可能不存在.") except PermissionError as e: print(f"错误: {e}. 可能缺乏权限或者文件被占用.") except OSError as e: print(f"错误: {e}. 这可能是由于尝试删除的是一个目录而非文件.") ``` 上述脚本首先定义了待删除文件的位置,并利用异常处理机制捕获可能出现的不同类型的错误情况,比如当试图移除不存在的文件、无权访问的文件或是实际上指向了一整个文件夹的情况时分别给出提示信息[^2]。 #### 自动化清理旧数据的应用场景 对于一些需要定期维护存储空间大小的任务来说非常有用处的一个应用案例就是模仿行车记录仪那样保留最近若干条视频片段而丢弃最早的那些多余部分。这里提供一段简化版逻辑作为参考: ```python import os from pathlib import Path def remove_oldest_files(directory, limit=5): files = sorted(Path(directory).iterdir(), key=os.path.getmtime) while len(files) > limit and files: victim = str(files.pop(0)) # 获取最早创建的那个项目 try: os.remove(victim) print(f'已删除过期文件:{victim}') except Exception as ex: print('未能完成删除操作:',ex) if __name__ == '__main__': target_dir=r'C:\temp_recordings' remove_oldest_files(target_dir ,limit=3 ) ``` 在这个例子当中我们先遍历给定目录下所有的子项按修改时间升序排列得到列表files;接着只要当前总数超过了预设阈值就会循环取出最前面也就是最早的成员执行真正的物理销毁动作直到满足条件为止[^3]。 #### 注意事项 需要注意几个常见陷阱避免程序崩溃或者行为不符合预期: - 路径拼接应考虑操作系统差异采用原始字符串形式书写反斜杠转义序列; - 对于大型生产环境建议加入更多的健壮性设计例如日志记录功能便于后续排查问题所在位置; - 当心并发冲突状况发生即多个进程同时争抢同一资源造成不可预测后果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值