Php Python3规范化URL
好的,显然python 3在urllib方面是非常荒谬的 所以,我有一个像这样的url格式Php Python3规范化URL,php,python,mysql,web-applications,Php,Python,Mysql,Web Applications,好的,显然python 3在urllib方面是非常荒谬的 所以,我有一个像这样的url格式 http_request = "http://localhost/system/index.php/index_file/store?cid={0}&cname={1}&fname={2}&fdir='{3}'"\ .format(client_id, client_name, each[1], each[2]) 其中each[1]和
http_request = "http://localhost/system/index.php/index_file/store?cid={0}&cname={1}&fname={2}&fdir='{3}'"\
.format(client_id, client_name, each[1], each[2])
其中each[1]
和each[2]
分别是文件名和文件目录
因此,通过print()生成的http_请求的结果会给出如下结果:
http://localhost/system/index.php/index_file/store? \
cid=90823&cname=John Smith&fname=Sample Document.doc& \
fdir='C:\Users\williamyang\Desktop\Files\90823 Michelle Moore\Sample Document.doc'
(单独使用反斜杠的目的就是为了更好地适合这里。实际代码的每行末尾没有单独的反斜杠。)
如果我在浏览器中输入URL,那就太好了。PHP应用程序通过$\u GET接收所有索引,然后转到MySQL,没有问题
但如果我让python来做
PHP告诉我索引$\u GET['fname']
和$\u GET['fdir']
不存在!!!真是疯了。好吧,那么
我尝试了从urllib.parse、urllib编码和解码、http\u request.replace(“\\\”、“/”)
以及其他许多方法
这些都不管用
我的python教授曾经告诉我,在字符编码方面,python做了一些有趣的事情
下面是我如何发送我的URL,在所有疯狂和无用的urllib解析实验之前
def getResponseCode(url):
conn = urllib.request.urlopen((url))
return conn.read()
其中url=http\u请求
我怎样才能着手解决这个问题
PHP说,$\u GET['fname']和$\u GET['fdir']
不存在
但当我将自动生成的http_请求粘贴到浏览器中时
一切正常URL不应包含空格。您的浏览器将自动对URL进行百分比编码,按照URL转义规则,将URL中不应包含的字符替换为
%20
或+
。Python不会自动执行此操作;最有可能的是,这种便利性引入了对编程很重要的歧义,但不会打扰普通的web用户。用于url转义的Python工具有:;您可能需要quote\u plus
。将URL的路径组件传递到urllib.quote\u plus
,然后再将其粘贴到域名,这样您就可以开始了。python 2的解决方案:
python 3的解决方案:
Ma摇摇晃晃的解决方案>
在从os.walk()读取目录之后,立即执行var.replace(“,”))
最后,
$var=str_replace(“”,“”,$_GET['var') 你能
打印报告(url)吗
在发送它并查看输出内容之前?'http://localhost/system/index.php/index_file/store?cid=90823&cname=Michelle Moore&fname=Sample Document.doc&fdir='C:\\Users\\williamyang\\Desktop\\Forms\\90823 Michelle Moore\\Sample Document.doc'
对于双反斜杠,我无能为力。Python 3拒绝我这么做。我在某个地方读到,双反斜杠被解释为单正斜杠。我想这可能就是问题所在。replace(“\\\”、“/”)或replace(“\\\\”、“/”)工作使用os.WACK()生成目录。因此反斜杠不,反斜杠应该没问题。这只是Python对repr的反斜杠进行了转义,因为否则您将无法判断“\n”是换行符还是反斜杠加“n”。