小编Rhy*_*hys的帖子

如何将多个语句放在一行中?

我不确定在什么标题下完全考虑这个问题,编码高尔夫看起来是合适的,如果有点不明确.

我对python有一点了解,但看起来很难"阅读".我看到它的方式,理解可能会完成与以下代码相同:

for i in range(10): if i == 9: print('i equals 9')
Run Code Online (Sandbox Code Playgroud)

这段代码比理解目前的工作方式更容易阅读,但我注意到你不能在一行中有两个':'......这也带给我了...

我的问题:

有什么方法可以让以下示例进入ONE LINE.

try:
    if sam[0] != 'harry':
        print('hello',  sam)
except:
    pass
Run Code Online (Sandbox Code Playgroud)

像这样的东西会很棒:

try: if sam[0] != 'harry': print('hellp',  sam)
except:pass
Run Code Online (Sandbox Code Playgroud)

但是我又遇到了相互冲突的':'我也很想知道是否有办法运行尝试(或类似的东西),除非,我需要放置除了之外似乎完全没有意义:传入那里.这是一条浪费的线.

谢谢你输入......这里有一个笑脸:D

python

129
推荐指数
6
解决办法
18万
查看次数

python pdb - 跳过循环

如何跳过循环使用pdb.set_trace()

例如,

pdb.set_trace()
for i in range(5):
     print(i)

print('Done!')
Run Code Online (Sandbox Code Playgroud)

pdb在循环之前提示.我输入一个命令.返回所有1-5个值,然后我希望pdbprint('Done!')执行之前再次提示.

debugging pdb

69
推荐指数
2
解决办法
2万
查看次数

模块子进程没有属性'STARTF_USESHOWWINDOW'

Hi Stack Overflow用户,

我遇到了一个令人沮丧的问题,找不到答案.

昨天我试图找到一种隐藏子进程的方法.Popen.例如,如果我打开cmd.我希望它永久隐藏起来.

我找到了这段代码:

kwargs = {}
if subprocess.mswindows:
     su = subprocess.STARTUPINFO()
     su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
     su.wShowWindow = subprocess.SW_HIDE
     kwargs['startupinfo'] = su 
subprocess.Popen("cmd.exe", **kwargs)
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力!

但今天,由于我不需要进入的原因,我不得不重新安装python 3(32位)

现在,当我运行我的程序时,我收到此错误:

Traceback (most recent call last):
  File "C:\Python31\hello.py", line 7, in <module>
    su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
AttributeError: 'module' object has no attribute 'STARTF_USESHOWWINDOW'
Run Code Online (Sandbox Code Playgroud)

我正在使用32位,python3.1.3 ......就像之前一样.

如果你有任何线索/替代品请发布,谢谢.

注意:我正在寻找一种SHORT方法来隐藏应用程序,而不是请两页代码

python subprocess python-3.x

10
推荐指数
2
解决办法
2万
查看次数

Python Selenium 4 - Firefox FirefoxBinary() 已弃用

我已经升级到 Selenium 4

new_binary_path = FirefoxBinary('path_to_binary')
selenium.webdriver.Firefox(executable_path=path, options=ops, firefox_binary=new_binary_path)
Run Code Online (Sandbox Code Playgroud)

或者

options.add_argument("--setBinary(path_to_binary)")
selenium.webdriver.Firefox(executable_path=path, options=ops)
Run Code Online (Sandbox Code Playgroud)

返回此错误信息

DeprecationWarning: executable_path has been deprecated, please pass in a Service object
Run Code Online (Sandbox Code Playgroud)

文档

https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md

删除了 firefox.Binary 类。仍然可以使用 firefox.Options#setBinary() 选择自定义二进制文件。同样,可以使用 firefox.Options#addArguments() 指定自定义二进制参数

有谁知道如何实施这些更改?我不知道标签是什么意思。我尝试过options.setBinary()setBinary()没有被识别。

selenium python-3.x selenium-firefoxdriver geckodriver

10
推荐指数
1
解决办法
1万
查看次数

使用Tkinter和cx_Freeze隐藏控制台窗口

我正在使用cx_freeze来冻结tkinter应用程序.当我运行exe时,我得到一个奇妙的USELESS控制台窗口以及我的tkinter GUI.

我想删除/隐藏这个无用的黑色窗口.

我见过线程提示如下:

root = tkinter.Tk()
root.withdraw()
Run Code Online (Sandbox Code Playgroud)

上面的代码与我想要的完全相反.它隐藏了我的GUI,而无用的黑色窗口仍然存在.我希望它是另一种方式.

tkinter cx-freeze python-3.x

9
推荐指数
3
解决办法
1万
查看次数

Python,使用多进程比不使用它慢

在花了很多时间试图绕过多处理之后我想出了这个代码,这是一个基准测试:

例1:

from multiprocessing  import Process

class Alter(Process):
    def __init__(self, word):
        Process.__init__(self)
        self.word = word
        self.word2 = ''

    def run(self):
        # Alter string + test processing speed
        for i in range(80000):
            self.word2 = self.word2 + self.word

if __name__=='__main__':
    # Send a string to be altered
    thread1 = Alter('foo')
    thread2 = Alter('bar')
    thread1.start()
    thread2.start()

    # wait for both to finish

    thread1.join()
    thread2.join()

    print(thread1.word2)
    print(thread2.word2)
Run Code Online (Sandbox Code Playgroud)

这在2秒内完成(多线程的一半).出于好奇,我决定下次运行:

例2:

word2 = 'foo'
word3 = 'bar'

word = 'foo'
for i in range(80000):
    word2 = …
Run Code Online (Sandbox Code Playgroud)

python benchmarking multithreading multiprocess

9
推荐指数
3
解决办法
1万
查看次数

cx_freeze:在以下目录中找不到可用的init.tcl

据我所知,cx_freeze是唯一能够将Python脚本制作成.exe文件的应用程序.但是,我想exe在Python 3中创建一个GUI .在冻结一个简单的Tkinter GUI并运行exe之后,我收到以下错误:

> _tkinter.TclError: Can't find a usable init.tcl in the following directories:
>     {C:\Users\User\Desktop\tkinter\build\exe.win32-3.1\tcl}
> C:/Users/User/Desktop/tkinter/build/exe.win32-3.1/tcl8.5
> C:/Users/User/Desktop/tkinter/build/lib/tcl8.5
> C:/Users/User/Desktop/tkinter/build/lib/tcl8.5
> C:/Users/User/Desktop/tkinter/lib/tcl8.5
> C:/Users/User/Desktop/tkinter/build/library
> C:/Users/User/Desktop/tk inter/library
> C:/Users/User/Desktop/tkinter/tcl8.5.2/library
> C:/Users/User/Desktop/tcl8.5.2/library

> This probably means that Tcl wasn't installed properly.
Run Code Online (Sandbox Code Playgroud)

我正在使用简单的设置 cx_freeze选项.

我的cx_freeze exe包保存到以下目录:

C:\Users\User\Desktop\tkinter\build\exe.win32-3.1
Run Code Online (Sandbox Code Playgroud)

文件是:

_ctypes.pyd
_tkinter.pyd
basicLABEL.exe
library.zip
python31.dll
tcl85.dll
tk85.dll
unicodedata.pyd
Run Code Online (Sandbox Code Playgroud)

tkinter cx-freeze python-3.x

8
推荐指数
1
解决办法
3931
查看次数

捕获套接字超时异常

我想捕获套接字超时(最好是在异常中)... except urllib.error.URLError:可以捕获它但我需要区分死链接和超时....如果我取出except urllib.error.URLError:套接字超时不捕获和脚本终止socket.timeout错误

import urllib.request,urllib.parse,urllib.error
import socket
import http
socket.setdefaulttimeout(0.1)


try:
    file2 = urllib.request.Request('http://uk.geforce.com/html://')
    file2.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13")
    file3 = urllib.request.urlopen(file2).read().decode("utf8", 'ignore')
except urllib.error.URLError: print('fail')
except socket.error: print('fail')
except socket.timeout: print('fail')
except UnicodeEncodeError: print('fail')
except http.client.BadStatusLine: print('fail')
except http.client.IncompleteRead: print('fail')
except urllib.error.HTTPError: print('fail')

print('done')
Run Code Online (Sandbox Code Playgroud)

python sockets timeout python-3.x

8
推荐指数
1
解决办法
2万
查看次数

Python3子进程通信示例

我是子处理的新手.

我只需要一个非常简单的win32示例,即parent.pychild.py之间的communication().从parent.py发送到child.py的字符串,由child.py更改,并从parent.py发送回parent.py以获取print().

我发布这个是因为我发现的例子最终要么不是win32,要么不使用让我困惑的孩子.

谢谢你的帮助.

python subprocess pipe communicate

8
推荐指数
1
解决办法
1万
查看次数

Python 3,urllib POST提交

我想编写一个Python脚本来自动登录我的宽带使用率计帐户.我之前从未做过POST提交,而且我遇到了一些问题.

import urllib.request, urllib.parse, urllib.error
import socket

try:
    details = urllib.parse.urlencode({ 'IDToken1': 'USERNAME', 'IDToken2': 'PASSWORD' })
    url = urllib.request.Request('https://login1.telecom.co.nz/distauth/UI/Login?realm=XtraUsers&goto=https%3A%2F%2Fwww.telecom.co.nz%3A443%2Fjetstreamum%2FxtraSum%3Flink%3Drdt', details)
    url.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13")

    responseData = urllib.request.urlopen(url).read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.HTTPError as e:
    responseData = e.read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.URLError:
    responseFail = True

except socket.error:
    responseFail = True

except socket.timeout:
    responseFail = True

except UnicodeEncodeError:
    print("[x]  Encoding Error")
    responseFail = True

print(responseData)
Run Code Online (Sandbox Code Playgroud)

从我导出的HTML IDToken1是用户名id,IDToken2是密码id. …

python post urllib python-3.x

7
推荐指数
1
解决办法
2万
查看次数