我想从一个主文件中运行几个Python文件。我正在使用my_module中的以下自定义函数进行此操作
import os
def run(file):
os.system(f"python3 -m folder.subfolder.{file}")
我在主文件中有:
from folder.my_module import run
run("first_file")
run("second_file")
在first_file和second_file内部,我编写了几个断言。除非所有断言都已运行而不引发second_file first
有时,函数返回一个列表,但您知道它只有一个项。得到它的一种方法是
a = somefunc()[0]
如果列表中有多个项,则它们将被静默丢弃。
建议使用
(a,) = somefunc()
一条评论建议
a, = somefunc()
两者都具有这样的优势:一个具有多个元素的数组会给出一个ValueError: too many values to unpack。它们还可以处理元组、集合和其他集合。
这些方法被认为是Pythonic的还是令人困惑的?他们有什么缺点吗?
我有以下设想:
message: ON
message: "ON"
message: 'ON'
message: "TONC"
message: Los Angeles, ON
message: HOLDS ON FILE
我想在前三种场景中匹配单词ON,而不是其他场景。
我试着用正面/负面的眼光看,但没有结果。例:
\bON\b(?=[\s{0,1}\"{0,1}\'{0,1}]$)
我正在将我的python2代码转换成python3
我遇到的一个错误是我需要用zip替换itertools.izip。
我这么做了,但我还是会犯错误。
我发现这两个函数并不是完全等价的。下面是一个示例:
from itertools import izip
for a,b in izip(range(3), "ABC"):
print(a,b)
上面的脚本给了我以下输出程序python2:
(0, 'A')
(1, 'B')
(2, 'C')
如果我简单地将izip替换为zip并在python3下运行:
for a,b in
我在python中有一个非常简单的代码
x = "ABCD ss xx ta"
l = x.split(" ")
for i, y in enumerate(l):
print(f"{i}: {y}")
这需要
real 0m0.037s
user 0m0.026s
sys 0m0.004s
我在编译后的Rust中做了同样的事情-它应该更快
fn main() {
let split = "ABCD ss xx ta".split(" ");
for (i, s) in
在unittest中有没有一种“像样的”方法来检查两个可迭代对象的内容是否相等?我使用了很多元组、列表和numpy数组,我通常只想测试内容而不是类型。目前,我只是简单地转换类型:
self.assertEqual (tuple (self.numpy_data), tuple (self.reference_list))
不久前我使用了这个列表理解:
[self.assertEqual (*x) for x in zip(self.numpy_data, self.reference_list)]
但这种解决方案似乎比类型转换稍差一些,因为它只在失败时打印单个值,而且对于不同长度的引用和数据(
当在类的实例中调用时,assert不会引发异常:
class TestCaseTest(TestCase):
...
def testFailedResutFormatted(self):
...
assert False # This doesn't work at all
TestCaseTest("testFailedResutFormatted").run()
assert False # But this works just fine
完整的代码可以在这里看到:
我显然做错了什么,因为这些都是书中
我正在尝试修复Python库中的一个错误,该错误在我尝试将对象转换为字符串时发生。
str(obj) # fails on py2 when the object return unicode
unicode(obj) # works perfectly on py2 but fails on py3
这是我在麻省理工开放式课程计算机科学入门的第七次讲座中遇到的一段代码。这个小程序输入底边和高度,然后用毕达哥拉斯定理计算斜边。
由于某些原因,它无法识别float的条目。
代码如下:
#! /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
import math
#Get base
inputOK = False
while not inputOK:
base = input("Enter base: ")
if type(base) == type(1.0):
in
在linux环境中运行名为shuf-new.py的文件时,以下命令在我使用python2时有效:
./shuf.py -e bob
但是,当我将代码的第一行更改为#!/usr/bin/python3时,我得到以下错误:
-bash: ./shuf-new.py: /usr/bin/python3: bad interpreter: No such file or directory
我不知道该如何解决这个问题。
我正在尝试安装用于python3的gi软件包(dropbox需要它)。我知道:
$ sudo apt install python3-gi
并得到:
python3-gi is already the newest version (3.36.0-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
但当我这么做的时候
$ python3 -m gi
我得到:
/usr/local/bin/python3: No module named gi
我不使用anaconda或virtualenv。如何正确安装gi?
我在site_tests.py文件中有一些简单的测试:
import unittest
class SiteTests(unittest.TestCase):
def test(self):
self.assertEqual('a', 'b')
if __name__ == '__main__':
unittest.main()
当我使用默认的test_site.py配置运行"Unittest in PyCharm“时,我得到的是:
Testing started at 23:45 ...
C:\
我有一个python程序,我需要在一个月的某一天运行它,所以我使用crontab来完成这个任务,并创建一个shell脚本来运行这个python程序。
这是我的shell脚本的一部分:
#!/bin/bash
filepath='file2018'
cd ${filepath}
python3 file.py
当我运行执行shell脚本的crontab时,日志文件显示以下错误:
line 9: python3: command not found
我真的很困惑为什么会出现这个错误,因为我已经安装了python3,并且可以直接从命令行运行python3。
此外,如果我用pytho