天道酬勤,学无止境

python

How do I specify URL resolution in python's requests library in a similar fashion to curl's --resolve flag?

问题 我正在编写一些 python 客户端代码,并且由于一些环境限制,我想指定一个 URL 并控制它的解析方式。 我可以通过 curl 使用 --resolve 标志来完成此操作。 有没有办法用 Python 的 requests 库做类似的事情? 理想情况下,这将在 Python 2.7 中工作,但我也可以让 3.x 解决方案工作。 回答1 在做了一些挖掘之后,我(不出所料)发现 Requests 通过要求 Python 来解析主机名(这是要求你的操作系统来做)。 首先,我找到了一些示例代码来劫持 DNS 解析(告诉 urllib2 使用自定义 DNS),然后我在套接字文档中找到了有关 Python 如何解析主机名的更多细节。 然后只需将所有内容连接在一起即可: import socket import requests def is_ipv4(s): # Feel free to improve this: https://stackoverflow.com/questions/11827961/checking-for-ip-addresses return ':' not in s dns_cache = {} def add_custom_dns(domain, port, ip): key = (domain, port) # Strange parameters

2022-07-11 10:01:34    分类:技术分享    python   python-requests

Check key exist in python dict

问题 下面是文件输出: apples:20 orange:100 下面是代码: d = {} with open('test1.txt') as f: for line in f: if ":" not in line: continue key, value = line.strip().split(":", 1) d[key] = value for k, v in d.iteritems(): if k == 'apples': v = v.strip() if v == 20: print "Apples are equal to 20" else: print "Apples may have greater than or less than 20" if k == 'orrange': v = v.strip() if v == 20: print "orange are equal to 100" else: print "orange may have greater than or less than 100" 在上面的代码中,我写的是“if k == 'orrange':”,但根据输出文件,它实际上是“橙色”。 在这种情况下,我必须打印或输出文件中不存在范围键。 请帮我。 这个怎么做 回答1 使用in关键字。 if 'apples' in d: if d[

2022-07-11 10:01:12    分类:技术分享    python   python-2.7

Use word count in Pandas dataframe to drop rows with only one word

问题 我有一个包含 2 条记录的数据框(数据): id text 0001 The farmer plants grain 0002 tuna 我想计算这个数据框的text列中的单词数,并删除只有一个单词的行。 我知道如何计算字数: count = data['text'].str.split().str.len() 如何使用结果来运行将删除数据框中的行的 IF 语句? 任何 IF 语句,例如... if count == 1: print('drop') ...导致此错误: Traceback (most recent call last): File "<ipython-input-118-b3fcb0218e8e>", line 32, in <module> if count == 1: File "C:\Users\taca\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 917, in __nonzero__ .format(self.__class__.__name__)) ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a

2022-07-11 10:00:39    分类:技术分享    python   pandas   dataframe

How to read txt file and create dictionary with adjacency list python

问题 我正在尝试通过读取具有以下格式的 .txt 文件在 python 中创建邻接列表字典: 1 2 1 3 1 10 2 3 4 5 4 6 4 10 5 6 7 8 7 9 7 10 8 9 我希望结果字典采用这种格式: adjacency_list_dict = {[1]: {[2,3,10], [2]: [1,3]....}等 注意,尽管看起来像有向图,但它实际上是无向的,并且字典中每个键的列表值必须包含所有相邻节点,例如 [10]: [1,4,7] 尽管 10 不在任何 txt 文件行中的第一列。 现在我被这个代码块困住了: # Main file for assignment 2 input_filename = "example_graph_1.txt" def create_teams(): return [] def create_lex(): return {} def make_to_list(node): return [node] teams = create_teams() adjacency_graph = create_lex() with open(input_filename) as graph_input: for line in graph_input: nodes = [int(x) for x in line.split()] for i

2022-07-11 09:59:11    分类:技术分享    python   dictionary   graph   adjacency-list

How to mock a property

问题 我在问如何使用 Python 3 在单元测试中模拟类属性。我尝试了以下方法,这对我遵循文档很有意义,但它不起作用: foo.py: class Foo(): @property def bar(self): return 'foobar' def test_foo_bar(mocker): foo = Foo() mocker.patch.object(foo, 'bar', new_callable=mocker.PropertyMock) print(foo.bar) 我已经安装了pytest和pytest_mock并像这样运行测试: pytest foo.py 我收到以下错误: > setattr(self.target, self.attribute, new_attr) E AttributeError: can't set attribute /usr/lib/python3.5/unittest/mock.py:1312: AttributeError 我的期望是测试运行没有错误。 回答1 属性机制依赖于在对象的类上定义的属性属性。 您不能在类的单个实例上创建“类似属性”的方法或属性(为了更好地理解,请阅读 Python 的描述符协议) 因此,您必须将补丁应用到您的类 - 您可以使用with语句,以便在测试后正确恢复该类: def test_foo_bar

2022-07-11 09:58:03    分类:技术分享    python   python-3.x   pytest   python-unittest   python-mock

How to replace the white space in a string in a pandas dataframe?

问题 假设我有一个这样的熊猫数据框: Person_1 Person_2 Person_3 0 John Smith Jane Smith Mark Smith 1 Harry Jones Mary Jones Susan Jones 可复制形式: df = pd.DataFrame([['John Smith', 'Jane Smith', 'Mark Smith'], ['Harry Jones', 'Mary Jones', 'Susan Jones'], columns=['Person_1', 'Person_2', 'Person_3']) 用下划线 _ 替换每个名称中名字和姓氏之间的空格的最佳方法是什么: Person_1 Person_2 Person_3 0 John_Smith Jane_Smith Mark_Smith 1 Harry_Jones Mary_Jones Susan_Jones 先感谢您! 回答1 我认为您也可以选择 DataFrame.replace。 df.replace(' ', '_', regex=True) 输出 Person_1 Person_2 Person_3 0 John_Smith Jane_Smith Mark_Smith 1 Harry_Jones Mary_Jones Susan_Jones 从一些粗略的基准测试来看

2022-07-11 09:57:49    分类:技术分享    python   pandas

Python file upload to php Script

问题 我目前正在尝试使用 python 脚本将文件上传到 php 服务器。 不幸的是我总是得到一个错误: 蟒蛇代码: import requests,json URL = '<Serverurl>.php' myfile = '<uploaddir>\Bild.jpg' files = {'upfile' : open(myfile, 'rb')} r = requests.post(URL, files = files) print(r.text) PHP代码: if (!empty($_FILES["upfile"])) { $imageFile = fopen($_FILES["upfile"]["tmp_name"], "r") or die("Unable to open file!"); $imageData = fread($imageFile, $_FILES["upfile"]["size"]); fclose($imageFile); //image processing follows here .. } else { echo "Error: no image found"; } 我从 python 控制台收到错误: "Unable to open file! ” PHP 控制台错误: 'PHP message: PHP Warning: fopen()

2022-07-11 09:56:24    分类:技术分享    php   python

Corpora/stopwords not found when import nltk library

问题 我试图在 python 2.7 中导入 nltk 包 import nltk stopwords = nltk.corpus.stopwords.words('english') print(stopwords[:10]) 运行它会给我以下错误: LookupError: ********************************************************************** Resource 'corpora/stopwords' not found. Please use the NLTK Downloader to obtain the resource: >>> nltk.download() 因此,我打开了我的 python 终端并执行了以下操作: import nltk nltk.download() 这给了我: showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml 然而,这似乎并没有停止。 再次运行它仍然给我同样的错误。 有什么想法会出错吗? 回答1 您当前正在尝试下载 nltk 数据中的每个项目,因此这可能需要很长时间。 您可以尝试仅下载您需要的停用词: import nltk nltk.download(

2022-07-11 09:55:55    分类:技术分享    python   nltk

Get combobox value in python

问题 我正在开发一个简单的程序,我需要从Combobox中获取值。 当Combobox在第一个创建的窗口中时很容易,但是例如,如果我有两个窗口并且Combobox在第二个窗口中,我无法从中读取值。 例如 : from tkinter import * from tkinter import ttk def comando(): print(box_value.get()) parent = Tk() #first created window ciao=Tk() #second created window box_value=StringVar() coltbox = ttk.Combobox(ciao, textvariable=box_value, state='readonly') coltbox["values"] = ["prova","ciao","come","stai"] coltbox.current(0) coltbox.grid(row=0) Button(ciao,text="Salva", command=comando, width=20).grid(row=1) mainloop() 如果我将小部件的父级从ciao更改为父级,它就可以工作! 谁能解释我? 回答1 您不能有两个Tk()窗口。 一个必须是Toplevel 。 要获取变量,您可以执行box

2022-07-11 09:55:07    分类:技术分享    python   tkinter   combobox   ttk

How do I upload a file to s3 using boto3 in python on heroku?

问题 网上所有的例子似乎都使用了boto。 我可以使用什么代码使用 boto3 将文件上传到 s3? 我正在尝试使用官方文档中的代码,但出现版本 4 身份验证失败的错误。 回答1 根据快速入门指南将您的密钥放入密钥文件中,然后使用以下代码: import boto3 s3 = boto3.resource(service_name='s3', region_name='REGION_NAME') data = open('PATH_TO_FILE_ON_DISK', 'rb') s3.Bucket('BUCKET_NAME').put_object(Key='FILENAME_ON_S3', Body=data) 官方文档并没有明确说明 region name 是必须的,否则可能会报错,并且无法在 heroku 上存储 region 的配置文件。 它必须包含在资源调用中。 回答2 from os import getenv import boto3 boto_kwargs = { "aws_access_key_id": getenv("AWS_ACCESS_KEY_ID"), "aws_secret_access_key": getenv("AWS_SECRET_ACCESS_KEY"), "region_name": getenv("AWS_REGION"), } s3

2022-07-11 09:54:23    分类:技术分享    python   heroku   amazon-s3   boto3