我需要从Python中发生的错误中获取错误号.
防爆; 尝试通过Paramiko包传输目录时,这段代码会出现错误:
try:
sftp.put(local_path,target_path)
except (IOError,OSError),errno:
print "Error:",errno
Run Code Online (Sandbox Code Playgroud)
我得到了输出,
Error: [Errno 21] Is a directory
Run Code Online (Sandbox Code Playgroud)
我想利用错误号进入更多代码来传输目录和目录内容.
例如,如何捕获python和urllib(2)中页面的404和403错误?
有没有大型包装的快速方法?
添加信息(堆栈跟踪):
Traceback (most recent call last):
File "test.py", line 3, in <module>
page = urllib2.urlopen("http://localhost:4444")
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>
Run Code Online (Sandbox Code Playgroud) 我正在尝试构造一个匹配单独换行符(\n)的正则表达式.
类似地,我需要另一个正则表达式来匹配双换行符(\n\n),这些换行符不是较长的换行符\n\n\n或类似行\n\n\n\n\n\n等的一部分.
\n(?!\n)并\n\n(?!\n)匹配太多(它们与较长的换行序列中的最后一个换行符相匹配).我该怎么做?
当用于研究这个问题,并在阅读源代码random.py,我就开始琢磨是否randrange和randint真正表现为"广告".我非常倾向于这么认为,但我读它的方式randrange基本上是实现的
start + int(random.random()*(stop-start))
Run Code Online (Sandbox Code Playgroud)
(假设为start和的整数值stop),因此randrange(1, 10)应返回1到9之间的随机数.
randint(start, stop)正在呼叫randrange(start, stop+1),从而返回1到10之间的数字.
我现在的问题是:
如果random()再回来1.0,那么randint(1,10)会回来11,不是吗?
如果文本没有被方括号括起来,我必须解析一个带有关键字的文本.我要与关键字匹配带.此外,必须有在两侧字边界带.
下面是一些例子,其中有不是关键字:
以下是使用 IS关键字的一些示例
有人帮忙吗?提前致谢.
我读过这篇文章,其中/^1?$|^(11+?)\1+$/Perl正则表达式用于测试数字是否为素数.
处理:
s = '1' * your_number
Run Code Online (Sandbox Code Playgroud)
如果s匹配正则表达式,那么它不是素数.如果没有,那就是素数.
你会如何将该正则表达式转换为Python的re模块?
我正在尝试检查列表是否没有成员作为布尔运算符AND,OR,NOT.
我用:
while ('AND' and 'OR' and 'NOT') not in list:
print 'No boolean operator'
Run Code Online (Sandbox Code Playgroud)
但是,当我的输入为:时a1 c2 OR c3 AND,它会输出'No boolean operator',这意味着通过使用上面的循环句子,该列表被认为是没有布尔运算符.
希望有人可以帮忙纠正.
谢谢,辛迪
为什么C:\\\\(引用`)正则 表达式 不匹配"C:\\"而且"C:\\\\"做什么?
r, err := regexp.Compile(`C:\\\\`) // Not match
r, err := regexp.Compile("C:\\\\") // Matches
if r.MatchString("Working on drive C:\\") == true {
fmt.Printf("Matches.")
} else {
fmt.Printf("No match.")
}
Run Code Online (Sandbox Code Playgroud) 我试图得到一个执行以下操作的正则表达式:
我找到了这个正则表达式:
((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])(?!\s).{8,})
Run Code Online (Sandbox Code Playgroud)
它处理上面的第2点和第3点,但是如何将第一个要求添加到上面的正则表达式?
我知道我可以做两个表达式然后上面的那个
\s
Run Code Online (Sandbox Code Playgroud)
但是我想把它全部集中在一起,我尝试做类似的事情,?!\s但我无法让它发挥作用.有任何想法吗?
我想从右边添加两个不同长度的列表这里是一个例子
[3, 0, 2, 1]
[8, 7]
Run Code Online (Sandbox Code Playgroud)
预期结果:
[3, 0, 10, 8]
Run Code Online (Sandbox Code Playgroud)
这些列表表示多项式的系数
这是我的实施
class Polynomial:
def __init__(self, coefficients):
self.coeffs = coefficients
def coeff(self, i):
return self.coeffs[-(i+1)]
def add(self, other):
p1 = len(self.coeffs)
p2 = len(other.coeffs)
diff = abs(p1 - p2)
if p1 > p2:
newV = [sum(i) for i in zip(self.coeffs, [0]*diff+other.coeffs)]
else:
newV = [sum(i) for i in zip([0]*diff+self.coeffs, other.coeffs)]
return Polynomial(newV)
def __add__(self, other):
return self.add(other).coeffs
Run Code Online (Sandbox Code Playgroud)
这一个工作正常,只是想知道无论如何做更好,更清洁的代码?由于python总是在干净的代码上强调,我想知道有没有办法编写更干净的pythonic代码?
python ×6
regex ×5
bounds ×1
c# ×1
coding-style ×1
go ×1
javascript ×1
paramiko ×1
perl ×1
random ×1
syntax ×1
urllib ×1
while-loop ×1