text_after[:-1]和text_after有什么区别啊,-1不就是指的是索引值的最后一个吗
请问小甲鱼第35课第三题的答案里,if text!=text_after[:-1]:#textbox的返回值会追加一个换行符。这里的text_after[:-1]和text_after有什么区别啊,-1不就是指的是索引值的最后一个吗import easygui as g
import os
file_path=g.fileopenbox(default='*.txt')
with open(file_path) as old_file:
title=os.path.basename(file_path)#去掉目录路径,单独返回文件名
msg='文件【%s】的内容如下:' % title
text=old_file.read()
text_after=g.textbox(msg,title,text)
if text!=text_after[:-1]:#textbox的返回值会追加一个换行符
choice=g.buttonbox('检测到文件内容发生了变化,请选择以下操作','警告',('覆盖保存','放弃保存','另存为'))
if choice=='覆盖保存':
with open(file_path,'w') as old_file:
old_file.write(text_after[:-1])
if choice=='放弃保存':
pass
if choice=='另存为':
another_path=g.filesavebox(default='.txt')
if os.path.splitext(another_path)!='.txt': #分离文件名和扩展名
another_path+='.txt'
with open(another_path,'w') as new_file:
new_file.write(text_after[:-1]) 本帖最后由 zltzlt 于 2020-8-19 17:03 编辑
text_after[-1] 确实是最后一个字符,但切片是不包含结束位置的,也就是 text_after[:-1] 其实是从 text_after 第一个字符截取到 text_after 倒数第二个字符
但现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1] zltzlt 发表于 2020-8-19 17:02
-1 确实是最后一个字符,但切片是不包含结束位置的,也就是 text_after[:-1] 其实是从 text_after 第一个字 ...
好的谢谢,还有一点我不太懂,他这个text_after里边的内容除了结尾比text多一个结束符外,自己不修改的话没有不同的了吧,为什么我执行代码,两者也总是会不一样,要我覆盖保存或者另存之类的。 chong0918 发表于 2020-8-19 17:05
好的谢谢,还有一点我不太懂,他这个text_after里边的内容除了结尾比text多一个结束符外,自己不修改的话 ...
现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1] zltzlt 发表于 2020-8-19 17:06
现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1]
我刚改完后解决了,谢谢。
页:
[1]