将过滤结果写入python文件。基于2个变量的过滤

2024-10-02 22:35:17 发布

您现在位置:Python中文网/ 问答频道 /正文

简介

嗨,Stackoverflow!前一段时间我在这里是为了一段我正在工作的代码:) 这是另一段代码,但在某种程度上基于上一段代码。你知道吗


旧脚本

这是给那些想知道的人的:

from pysnap import Snapchat

s = Snapchat()

username = raw_input('Enter username: ')
password = raw_input('Enter password: ')
s.login(username, password)
snaps = s.get_snaps()

for sender in snaps:
    if sender['media_type'] == 3:
        s.add_friend(sender[u'sender'])

这很简单,get\u snaps()给了我们一些结果,从中我们可以断定是否有人向我们发送了朋友请求,因为snapchat认为朋友请求符合媒体类型3。你知道吗


新计划

总之,我的新代码就是基于这个。你知道吗

我想做一个脚本,过滤用户名的隐私设置。 部分原因是为了说明这些在snapchat中的重要性。你知道吗

隐私设置的值为01。0表示您的隐私设置设置为“所有人”,1表示设置为“仅限朋友”。 我想能够保存相应的用户名在适当的文件。你知道吗


回应

当我添加用户名时,它会给出以下响应:

隐私设置设置为0(所有人)

{u'logged': True,
 u'message': u'dummyname is now your friend!',
 u'object': {u'can_see_custom_stories': True,
             u'direction': u'OUTGOING',
             u'display': u'dummyname',
             u'name': u'dummyname',
             u'source': u'SEARCHED_BY_USERNAME',
             u'type': 0}}

设置为私有:

{u'logged': True,
 u'message': u'dummyname is private. Friend request sent.',
 u'object': {u'can_see_custom_stories': True,
             u'direction': u'OUTGOING',
             u'display': u'',
             u'name': u'dummyname',
             u'source': u'SEARCHED_BY_USERNAME',
             u'type': 1}}

无效用户名:

{u'logged': False, u'message': u"Sorry! Couldn't find sdlkjsdl;jkaslkjwe"}

我现在在哪里?

到目前为止,我一直在筛选有效的用户名并将其添加到相应的文件中,然后丢弃无效的用户名:

from pysnap import Snapchat

#Get data needed to login and add friend.
username = raw_input('Enter username: ')
password = raw_input('Enter password: ')
someone = raw_input('Enter friend: ')

#Stating s
s = Snapchat()

#Logging in
s.login(username, password)

#Stating resp
resp = s.add_friend(someone)

#Filter json response
#Adding username to file accordingly
for name in resp:
    if name['type'] == 1: #PRIVACY_FRIENDS = 1
        with open ('private.txt', 'a') as f: f.write (name[u'name'])
    elif name['type'] == 0: #PRIVACY_EVERYONE = 0
         with open ('n-private.txt', 'a') as f: f.write (name[u'name'])
    else: #Don't do anything but just tell me it's an invalid username.
        print "Not a valid username"

当前错误

$ Traceback (most recent call last):
$   File "responseaddfriend.py", line 20, in <module>
$     if name['type'] == 1: #PRIVACY_FRIENDS = 1
$ TypeError: string indices must be integers

我试过什么?

我试图删除name前面的name['type']

结果是:

$ Not a valid username
$ Not a valid username
$ Not a valid username

没有写任何东西到文件里。你知道吗


其他可能有用的信息。

我正在使用的非官方API:

https://github.com/martinp/pysnap/blob/master/pysnap/__init__.py

朋友的价值观。你知道吗

FRIEND_CONFIRMED = 0
FRIEND_UNCONFIRMED = 1
FRIEND_BLOCKED = 2
PRIVACY_EVERYONE = 0
PRIVACY_FRIENDS = 1

发布此问题前的最后一句话

亲爱的Stackoverflow社区,在问这个问题之前,我已经尽了最大的努力,尽管“我尝试了什么?”截面相当小。你知道吗

我已经做了很多研究,并参考了python教程/手册页,但我自己无法理解这一点。你知道吗

我贴出这个问题,因为我真的相信我不能不得到太多的沮丧和花费数天的时间,我自己解决这个问题。你知道吗

有人向我指出,以前的问题缺乏一些额外的细节,我希望在这个问题上以正确的方式处理这些细节。 如果没有,请留下一个意见,我可以提高时,问一个问题。你知道吗

尽管这对你们中的一些人来说似乎是一个“noob”问题,但请理解,你也必须从某个地方开始,我真的很感激我得到的每一个回答,因为最终它会让我成为一个更好的程序员。你知道吗

谢谢。


Tags: 代码namefriendinputrawtypeusernamepassword
1条回答
网友
1楼 · 发布于 2024-10-02 22:35:17

你完全不正确地使用resp对象。你知道吗

请尝试以下操作:

if 'object' in resp.keys():
    # 'object' is contained within resp as a key
    if resp['object']['type']:
        # type is 1
        with open ('private.txt', 'a') as f: f.write(resp['object']['name'])
    else:
        # type is 0
        with open ('n-private.txt', 'a') as f: f.write(resp['object']['name'])
else:
    # no object in resp, so it's an invalid username
    print 'Not a valid username.'

为了便于将来参考,在将代码放入脚本之前,请在pythonshell中尝试您的代码,这样更容易判断错误发生的位置!你知道吗

相关问题 更多 >