删除和更新文本文件中的行-Python
我正在学习Python,作为一个学习项目,我正在开发一个twitter机器人。我正在使用Python 3。我用以下几行文字发推文 李小龙最喜欢的饮料是什么?哇!删除和更新文本文件中的行-Python,python,twitter,Python,Twitter,我正在学习Python,作为一个学习项目,我正在开发一个twitter机器人。我正在使用Python 3。我用以下几行文字发推文 李小龙最喜欢的饮料是什么?哇! 诵读困难的魔鬼崇拜者把他的灵魂卖给了圣诞老人。 你杀死素食吸血鬼的时候,心上有一块牛排。 有一次越狱,我看到一个侏儒爬上了栅栏。他跳下来嘲笑我,我想,这有点屈尊了 这是我使用Twython发送tweet的代码: from twython import Twython, TwythonError import time APP_KEY
诵读困难的魔鬼崇拜者把他的灵魂卖给了圣诞老人。
你杀死素食吸血鬼的时候,心上有一块牛排。
有一次越狱,我看到一个侏儒爬上了栅栏。他跳下来嘲笑我,我想,这有点屈尊了 这是我使用Twython发送tweet的代码:
from twython import Twython, TwythonError
import time
APP_KEY = '##########' # Customer Key here
APP_SECRET = '#############' # Customer secret here
OAUTH_TOKEN = '###############' # Access Token here
OAUTH_TOKEN_SECRET = '################' # Access Token Secret here
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
with open('jokes.txt', 'r+') as file:
buff = file.readlines()
for line in buff:
if len(line)<140:
print ("Tweeting...")
twitter.update_status(status=line)
time.sleep(3)
with open ('jokes.txt', 'r+') as file:
buff.remove(line)
file.writelines(buff)
else:
with open ('jokes.txt', 'r+') as file:
buff.remove(line)
file.writelines(buff)
print ("Skipped line - Char Length Violation")
continue
except TwythonError as e:
print (e)
从twython导入twython,TwythonError
导入时间
APP#u KEY=“##########”#此处为客户密钥
APP#u SECRET=“################”#这里是客户的秘密
OAUTH#u TOKEN='''''.'###############################
OAUTH#u TOKEN#u SECRET=“#################################
twitter=Twython(应用程序密钥、应用程序密钥、OAUTH令牌、OAUTH令牌密钥)
尝试:
打开('crooks.txt',r+')作为文件:
buff=file.readlines()
对于线增益:
if len(行)
似乎在<代码>下错放了。。。作为文件:
block。使用的的优点是,您不需要进行这种记账
在else
块中,file
对象已关闭,因此file.writelines()
应引发异常
据我所知,buff是一个字符串,因此是不可变的。您可能想尝试buff=buff.remove(…)
,但它甚至有remove
方法吗 首先,尽量避免使用file
来命名变量,因为它是Python中用于类型file
的保留关键字
固定代码:
from twython import Twython, TwythonError
import time
APP_KEY = '##########' # Customer Key here
APP_SECRET = '#############' # Customer secret here
OAUTH_TOKEN = '###############' # Access Token here
OAUTH_TOKEN_SECRET = '################' # Access Token Secret here
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
with open('jokes.txt', 'r+') as fp:
buff = fp.readlines()
for line in buff[:]:
if len(line) < 140:
print("Tweeting...")
twitter.update_status(status=line)
time.sleep(3)
with open('jokes.txt', 'w') as fp:
buff.remove(line)
fp.writelines(buff)
else:
with open('jokes.txt', 'w') as fp:
buff.remove(line)
fp.writelines(buff)
print("Skipped line - Char Length Violation")
continue
except TwythonError as e:
print(e)
从twython导入twython,TwythonError
导入时间
APP#u KEY=“##########”#此处为客户密钥
APP#u SECRET=“################”#这里是客户的秘密
OAUTH#u TOKEN='''''.'###############################
OAUTH#u TOKEN#u SECRET=“#################################
twitter=Twython(应用程序密钥、应用程序密钥、OAUTH令牌、OAUTH令牌密钥)
尝试:
将open('crooks.txt',r+'作为fp:
buff=fp.readlines()
对于buff[:]中的行:
如果长度(线)<140:
打印(“推特…”)
twitter.update_status(status=line)
时间。睡眠(3)
打开('crooks.txt',w')作为fp:
buff.移除(线)
fp.writelines(浅黄色)
其他:
打开('crooks.txt',w')作为fp:
buff.移除(线)
fp.writelines(浅黄色)
打印(“跳过行-字符长度冲突”)
持续
除TwythonError作为e外:
打印(e)
通常,就像在本例中一样,在迭代同一个iterable的循环中修改iterable(list)不是一个好主意。这里的技巧是buff[:]:
中的line中的切片操作符,它复制buff
列表,并在副本上迭代,而不是原始的buff
列表
此外,如果要覆盖文件,必须以“w”模式打开,而不是以“r+”模式打开,因为“r+”不会首先截断文件
from twython import Twython, TwythonError
import time
APP_KEY = '##########' # Customer Key here
APP_SECRET = '#############' # Customer secret here
OAUTH_TOKEN = '###############' # Access Token here
OAUTH_TOKEN_SECRET = '################' # Access Token Secret here
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
with open('jokes.txt', 'r+') as fp:
buff = fp.readlines()
for line in buff[:]:
if len(line) < 140:
print("Tweeting...")
twitter.update_status(status=line)
time.sleep(3)
with open('jokes.txt', 'w') as fp:
buff.remove(line)
fp.writelines(buff)
else:
with open('jokes.txt', 'w') as fp:
buff.remove(line)
fp.writelines(buff)
print("Skipped line - Char Length Violation")
continue
except TwythonError as e:
print(e)