博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
删除博客园复制 python 代码时遗留的空格
阅读量:4991 次
发布时间:2019-06-12

本文共 2193 字,大约阅读时间需要 7 分钟。

四个月没来博客园发博,发现多了一个功能:复制代码。 这本是好事,但很可惜,我复制的 python 代码,博客园帮我在每行的首字节处添加了一个空格,python 这种强缩进风格导致复制的代码跑不起来,把空格去掉是唯一的方法。而打开代码文件手动删除每行的第一个空格可行,但不现实。此文便为此而生,二为练手=,=。


先来一个简单的代码,主要是由用户输入所要删除空格的代码文件,程序在运行目录下新建了一个 backup.py 文件,打开原文件逐一去掉空格的同时写进这个新文件里。代码比较简单:

version_1
1 ori_file = raw_input('Input: ') 2 new_file = open('backup.py', 'w') 3 for line in open(ori_file): 4     if line: 5         line = line[1:] 6     new_file.write(line) 7 new_file.close() 8 raw_input('Done. Press any key to continue...')

 


目的已达到,但练手为其中一个目的,不妨多设置一些需求。下面是我的想法,包括大致上的设计思路。

1. 打印选择:输入目录,则处理目录下的所有文件;输入数量不定的文件名,若不包含目录则将其判断为当前目录,处理找到的文件,将不存在的文件返回给用户。

2. 判断输入:若为目录,则将目录下的所有文件放置在列表中,遍历列表的文件即可;若为文件,则输入的多个文件名可这样处理器 for file in input.split().

另外我还想实现接受目录和文件混合输入的情况,可将输入全部放到列表中,逐一判断其元素为目录或是文件,再相应处理。 代码如下:

version_2
1 import os  2 import os.path as op  3  4 __all__ = ['deal_dir', 'deal_file']  5  6 def begin_bak():  7     deal_with = raw_input('Input: ')  8     for each in deal_with.split():  9         if op.isdir(each): 10             deal_dir(each) 11         elif op.isfile(each): 12             deal_file(each) 13         else: 14             print "Cannot find %s ." % each 15 16 def deal_dir(each): 17     dir_file = [] 18     for root, dirs, fnames in os.walk(each): 19         if fnames: 20             for fn in fnames: 21                 dir_file.append(op.join(root, fn)) 22     for each in dir_file: 23         baking(each) 24 25 def deal_file(each): 26     if op.exists(each): 27         each = op.join('.', each) 28     else: 29         print 'Cannot find %s .' % each 30     baking(each) 31 32 def baking(each): 33     new_file = open(op.splitext(each)[0] + '.bak.py', 'w') 34     file_list = list(open(each)) 35     for line in file_list: 36         if line == file_list[0]: 37             line = line 38         else: 39             line = line[1:] 40         new_file.write(line) 41     new_file.close() 42 43 if __name__ == '__main__': 44     begin_bak() 45     raw_input('Done. Press any key to continue...')

运行后看到 Input: 时输入所要处理的目录和文件,. 号表示当前目录。如果文件名不带有路径,则默认为当前路径。

 

至此全文完,当然啦,希望博客园尽快修好这个 bug 啦。抑或是故意的= =?

Done. Press any key to continue...

转载于:https://www.cnblogs.com/way_testlife/archive/2011/12/28/2305327.html

你可能感兴趣的文章
Vue路由history模式踩坑记录:nginx配置解决404问题
查看>>
c# 多张图片合成一张图片
查看>>
使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
查看>>
AngularJS多个ng-app只解析第一个的问题
查看>>
强制修改常量的值
查看>>
Grunt 初体验
查看>>
hive跑mapreduce报java.lang.RuntimeException: Error in configuring object
查看>>
ArcGIS中的坐标系统定义与投影转换方法
查看>>
机械臂的碰撞检测资料
查看>>
[UnityShader基础]01.渲染队列
查看>>
字符串转整型C++
查看>>
随机生成红包算法
查看>>
Datatable get请求传参应用
查看>>
杭电1170
查看>>
3unit8
查看>>
kettle与各数据库建立链接的链接字符串
查看>>
【转】Apache Solr 访问权限控制
查看>>
LoadRunner压力测试实际运用的使用方法
查看>>
项目管理理论与实践(1)——企业项目管理介绍
查看>>
MySql学习20----数据库范式
查看>>