[问题] 提取txt内文后重命名档名

楼主: s4028600 (佑)   2017-12-02 00:21:35
首先我是个超级小白
这是我目前弄出来的东西
f = open('11.txt',encoding = 'utf8')
lines = f.readlines()
print (lines[2])
重命名还完全没头绪...之后再说...
首先有几个问题
第1
11.txt只是其中一个档案
一个一个改档案名也太多了
我要如何自动处理多数档案?
第2
我的py档打算和txt放在一起
然后像bat档一样开启后自动执行
有办法吗?
第3
有办法保留执行画面吗?
像bat档的pause
拜托各位帮忙了
感谢
作者: BigBank ( )   2017-12-02 01:02:00
1. os.walk() 2.3.看不太懂 写bat档执行python?
楼主: s4028600 (佑)   2017-12-02 01:27:00
查了一下os.walk看不懂 把os.walk放到open里面?
作者: stucode   2017-12-02 05:02:00
1. os.walk() 2. os.getcwd() 后 os.walk()3. input() 或者 os.system('pause')os.walk() 搭配 for ... in 使用。原 PO 如果没有程式基础的话,建议先找个基本教学看到循环部分再回来写。
作者: TitanEric (泰坦)   2017-12-02 18:16:00
我都用os.listdir 不过楼上们提到的方法也可以
作者: stucode   2017-12-02 22:28:00
glob 也可以,但它是传回档名 list,一样要搭配 for 循环来走访每个档案。
作者: danny0838 (道可道非常道)   2017-12-02 23:10:00
可以翻翻官方文件 https://goo.gl/bbK5BC 里面有范例右上角有搜寻按钮,想知道任何 API 的用途及可用参数都可以输进去查。平常不记得网址只要Google搜python doc前几项就能找到官网。如果英文还是有困难,也可以输入中文关键字Google,比如 "python 档案更名"、"python 列出档案" 不过中文资料品质就不一定那么好,另外也要注意python 2和3语法不同,有些比较旧的文章是python 2,现在多半用python3,可能需要改一下程式码才能用。
作者: stucode   2017-12-02 23:18:00
如果不知道现在用的是哪个版本,可以这样确认:import sysprint(sys.version)open(x, ...) # x 不加括号。加括号的话会变成开启档名为x 的档案。另外 f=open() 跟针对档案处理的每个动作都要缩排,Python 是以缩排来决定程式码区块的。* 抱歉,我是要说不加引号。
楼主: s4028600 (佑)   2017-12-03 00:01:00
行了 但是马上出新问题... 只读取最后一个档案的第3行只好再试试了
作者: danny0838 (道可道非常道)   2017-12-03 01:02:00
缩排先弄正确,如果还是出错要贴错误讯息才能判断一个可能原因是该行有某些字符不允许用于档名你得想好遇到不能用于档名的字符要怎么处理
楼主: s4028600 (佑)   2017-12-03 04:05:00
已经确定有两个原因 一个是档案被占用 一个确实是字符字符有点头痛 很难删除但是不知道为什么只读取一个档案很奇怪 是要用for吗?试不出编码
作者: stucode   2017-12-03 10:37:00
档案占用是因为开档读取后没有关闭,两个解决方法:f.close() 或 with open(...) as f:个人比较推荐后者,但前者对你来说可能比较好理解。readlines() 读取的字串中包含换行字符 '\n',要用于重新命名之前记得先裁掉(关键字:字串处理),其余部分就是danny 大提到的档案系统不接受的字符,这部分依照需求处理方式不同,但一样是做字串处理。只读取最后一个档案的问题,请去 google Python 缩排,中文资料也不少。
作者: djshen (djshen)   2017-12-03 11:38:00
你知道for loop怎么用吗?你要不要一步一步来 1读单一档案 2拿到正确档名 3 rename4写成loop形式全部混在一起你自己也不知道哪里出问题没人可以帮你测试 别人又没有你的档案
楼主: s4028600 (佑)   2017-12-03 14:48:00
ok 感谢 现在只剩下4写成loop形式 但是写不出解法…缩排?都可以执行啊?空白键在手机ptt会不见 要整页模式
作者: youngman77 (大咩)   2017-12-03 18:15:00
你有把f=open之后的code都空四格吗?
作者: ncueBenson (nuceBenson29)   2017-12-03 20:24:00
python 的for 是用空格控制唷 所以你在for的:之后有加上四格空格的都会在循环里面
楼主: s4028600 (佑)   2017-12-03 21:47:00
还好改名后不是txt档
作者: stucode   2017-12-03 22:38:00
while True: 拿掉,for 前面不要有空格。

Links booklink

Contact Us: admin [ a t ] ucptt.com