Python &引用;“无效模式”;尝试使用github3.py创建文件时

Python &引用;“无效模式”;尝试使用github3.py创建文件时,python,server,request,scapy,github3.py,Python,Server,Request,Scapy,Github3.py,使用github3.py 1.0.0a4,我试图创建一个基本的“服务器”程序,用于创建、更新、删除和获取文件。但是,我的程序在尝试创建文件时会引发“InvalidSchema”。为什么?我用文档检查了我的程序 代码: 从github3导入登录 从github3.repos.repo导入存储库 导入系统,时间 打印系统argv 如果len(sys.argv)!=5: 打印“用法:server.exe用户名=。。。密码=。。。[[-create-delete-update-fetch]文件][rep

使用github3.py 1.0.0a4,我试图创建一个基本的“服务器”程序,用于创建、更新、删除和获取文件。但是,我的程序在尝试创建文件时会引发“InvalidSchema”。为什么?我用文档检查了我的程序

代码:

从github3导入登录
从github3.repos.repo导入存储库
导入系统,时间
打印系统argv
如果len(sys.argv)!=5:
打印“用法:server.exe用户名=。。。密码=。。。[[-create-delete-update-fetch]文件][repo=server]'
sys.exit()
尝试:
un,pw,mode,f=sys.argv[1]。拆分('='),sys.argv[2]。拆分('='),sys.argv[3],sys.argv[4]
me=登录(un,pw)
除:
打印“用法:server.exe用户名=。。。密码=。。。[[-create-delete-update-fetch]文件][repo=server]'
sys.exit()
尝试:
回购=系统argv[5]
除索引器外:
repo='服务器'
repo=Repository({'name':repo},session=me)
如果模式=='-创建':
f=打开(f)
name=f.name
data=f.read()
repo.create_文件(名称'create'+time.asctime(),data.encode('utf-8'))
如果模式=='-删除':
f=打开(f)
repo.contents(f.name).delete('delete'+time.asctime(),data.encode('utf-8'))
如果模式=='-更新':
f=打开(f)
name=f.name
data=f.read()
repo.contents(name).update('update'+time.asctime(),data.encode('utf-8'))
如果模式=='-fetch':
以开放式(f,mode='w')作为f:
f、 写入(回购内容(f.名称))
在命令行上运行时的结果:

C:\Python27>python server.py username=... password=... -create pytest.py
['server.py', 'username=...', 'password=...', '-create', 'pytest.py']
Traceback (most recent call last):
  File "server.py", line 30, in <module>
    repo.create_file(name, 'Create '+time.asctime(), data.encode('utf-8'))
  File "C:\Python27\lib\site-packages\github3\decorators.py", line 33, in auth_wrapper
    return func(self, *args, **kwargs)
  File "C:\Python27\lib\site-packages\github3\repos\repo.py", line 745, in create_file
    json = self._json(self._put(url, data=dumps(data)), 201)
  File "C:\Python27\lib\site-packages\github3\models.py", line 199, in _put
    return self.session.put(url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 521, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "C:\Python27\lib\site-packages\github3\session.py", line 88, in request
    response = super(GitHubSession, self).request(*args, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 570, in send
    adapter = self.get_adapter(url=request.url)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 644, in get_adapter
    raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for ':///contents/pytest.py
C:\Python27>python服务器.py用户名=。。。密码=-创建pytest.py
['server.py'、'username=…'、'password=…'、'-create'、'pytest.py']
回溯(最近一次呼叫最后一次):
文件“server.py”,第30行,在
repo.create_文件(名称'create'+time.asctime(),data.encode('utf-8'))
文件“C:\Python27\lib\site packages\github3\decorators.py”,第33行,在auth\u包装中
返回函数(self、*args、**kwargs)
文件“C:\Python27\lib\site packages\github3\repos\repo.py”,第745行,在create\u文件中
json=self.\ujson(self.\uput(url,data=dumps(data)),201)
文件“C:\Python27\lib\site packages\github3\models.py”,第199行,输入
返回self.session.put(url,**kwargs)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第521行,输入
返回self.request('PUT',url,data=data,**kwargs)
请求中第88行的文件“C:\Python27\lib\site packages\github3\session.py”
response=super(GitHubSession,self).request(*args,**kwargs)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第468行,在请求中
resp=自我发送(准备,**发送)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第570行,在send中
adapter=self.get\u适配器(url=request.url)
get\U适配器中的文件“C:\Python27\lib\site packages\requests\sessions.py”,第644行
raise InvalidSchema(“未找到“%s”的连接适配器%url)
requests.exceptions.InvalidSchema:未找到“:///contents/pytest.py”的连接适配器

un
pw
是列表而不是字符串。使用
un=sys.argv[1].split('=')[1]
或类似的方法

编辑代码:

从github3导入登录
从github3.repos.repo导入存储库
导入系统,时间
如果len(sys.argv)!=5:
打印“用法:server.exe用户名=。。。密码=。。。[[-create-delete-update-fetch]文件][repo=server]'
sys.exit()
尝试:
un,pw,mode,f=sys.argv[1]。拆分('=')[1],sys.argv[2]。拆分('=')[1],sys.argv[3],sys.argv[4]
me=登录(un,pw)
除:
打印“用法:server.exe用户名=。。。密码=。。。[[-create-delete-update-fetch]文件][repo=server]'
sys.exit()
尝试:
回购=系统argv[5]
除索引器外:
repo='服务器'
repo=me.repository(un,repo)
如果模式=='-创建':
f=打开(f)
name=f.name
data=f.read()
repo.create_文件(名称'create'+time.asctime(),data.encode('utf-8'))
如果模式=='-删除':
f=打开(f)
repo.file_contents(f.name).delete('delete'+time.asctime())
如果模式=='-更新':
f=打开(f)
name=f.name
data=f.read()
repo.file_contents(name).update('update'+time.asctime(),f.read().encode('utf-8'))
如果模式=='-fetch':
以开放式(f,mode='w')作为f:
f、 写入(repo.file\u内容(f.name).解码)
(删除等其他错误已修复。)

在这一行:

un, pw, mode, f = sys.argv[1].split('='), sys.argv[2].split('='), sys.argv[3], sys.argv[4]
您将
un
pw
指定为列表,同时将它们当作字符串使用。您需要找到从
.split()
创建的列表的第二项:将行替换为

un, pw, mode, f = sys.argv[1].split('=')[1], sys.argv[2].split('=')[1], sys.argv[3], sys.argv[4]
为我工作