小编cxw*_*cxw的帖子

返回变量的真实性而不是它的值?

考虑以下代码:

test_string = 'not empty'

if test_string:
    return True
else:
    return False
Run Code Online (Sandbox Code Playgroud)

我知道我可以构造一个条件表达式来做到这一点:

return True if test_string else False
Run Code Online (Sandbox Code Playgroud)

但是,当我宁愿返回布尔值时,我不喜欢测试布尔值是真还是假.我怎么才能恢复它的真实性?

python string boolean truthiness

5
推荐指数
1
解决办法
278
查看次数

分段仿射变换+扭曲输出看起来很奇怪

我有一个图像,我试图使用skimage.PiecewiseAffineTransform和来扭曲skimage.warp。我有一组控制点 ( true) 映射到一组新的控制点 ( ideal),但扭曲没有返回我期望的结果。

在这个例子中,我有一个简单的波长梯度,我试图将其“拉直”成列。(您可能会问为什么我要查找轮廓和插值,但那是因为我实际上将此代码应用于更复杂的用例。我只是想重现这个简单示例的所有代码,这会导致相同的奇怪输出。)

为什么我的输出图像只是将输入图像扭曲成正方形和插图?我正在使用 Python 2.7.12 和 matplotlib 1.5.1。这是代码。

import matplotlib.pyplot as plt
import numpy as np
from skimage import measure, transform

true = np.array([range(i,i+10) for i in range(20)])
ideal = np.array([range(10)]*20)

# Find contours of ideal and true images and create list of control points for warp
true_control_pts = []
ideal_control_pts = []

for lam in ideal[0]:
    try:
        # Get the isowavelength contour in the true and ideal images …
Run Code Online (Sandbox Code Playgroud)

python numpy affinetransform python-2.7 scikit-image

5
推荐指数
1
解决办法
2916
查看次数

神秘的for循环在python中

exp = [1,2,3,4,5]

如果我然后执行x in exp,它会给我False.但是如果我执行:

for x in exp:
    if x==3:
        print('True')
Run Code Online (Sandbox Code Playgroud)

然后执行x in exp,它返回True.这里发生了什么事?我没有给x分配任何东西.我有吗?我真的很困惑.

**编辑:**对不起,如果我之前没有说过:x之前没有定义.

回答

谢谢大家.我现在明白了.的元素exp被分配给x作为exp被遍历.并且在最后一行代码中x in exp等于True,因为最后一个元素已被分配给x.

python membership for-loop contains sequence

4
推荐指数
2
解决办法
1127
查看次数

用Filehandle和while循环定义的用法

在阅读有关高级Perl编程(1)的书时,我遇到了这段代码:

while (defined($s = <>)) {
    ...
Run Code Online (Sandbox Code Playgroud)

defined在这里使用有什么特别的理由吗?perlop文档 说:

在这些循环结构中,然后测试指定的值(无论是自动还是显式赋值)以查看它是否已定义.定义的测试避免了line具有字符串值的问题,该字符串值将被Perl视为false,例如a """0"没有尾随换行符.如果你真的想要这些值来终止循环,那么它们应该被明确地测试:[...]

那么,是否会有一个角落案例,或者仅仅是因为这本书太旧而且defined在最近的Perl版本中添加了自动测试?


(1) 高级Perl编程,第一版,Sriram Srinivasan.奥莱利(1997)

perl filehandle while-loop

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

如何打印匹配grep模式的文件的文件详细信息

我想打印文件详细信息以及grep输出但无法这样做.例如,对于命令

grep 3456 A.txt
Run Code Online (Sandbox Code Playgroud)

我得到了输出

A.txt
Run Code Online (Sandbox Code Playgroud)

但是想要输出

-rw-rw-r-- 1 tarun tarun   41356911 Aug 25 01:31 A.txt
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但没有成功:

  1. grep 34567 A.txt | xargs ls -tlr

  2. grep 34567 A.txt | while read line ; do echo "$line" | date %s.%N ; done

  3. grep -Hr 34567 A.txt | awk -F: '{"stat -c %z "$1 | getline r; print r": "$0 }'

  4. grep 34567 A.txt | awk -F: '{"date -r \""$1"\" +\"%F %R\"" | getline d; print d,$0}'

bash shell grep loops xargs

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

为什么在bash中将stdin重定向到while循环中?

请考虑以下示例脚本:

#!/bin/sh

do_something() {
    echo $@
    return 1
}

cat <<EOF > sample.text
This is a sample text
It serves no other purpose
EOF

cat sample.text | while read arg1 arg2 arg3 arg4 arg5; do
    ret=0
    do_something "$arg1" "$sarg2" "$arg3" "$arg4" "$arg5" <&3 || ret=$?
done 3<&1
Run Code Online (Sandbox Code Playgroud)

重定向stdout为filedescriptor 3的输入的目的是什么?至少在Bash,如果省略它似乎没有任何区别.如果它在任何其他shell中执行,它会有什么影响bash吗?

UPDATE

对于那些想知道它来自哪里的人来说,它是来自Debian cryptdisks_start脚本的简化示例.

linux bash shell io-redirection

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

在包装bash脚本中设置管道

假设我有一个我调用的python程序

python main.py
Run Code Online (Sandbox Code Playgroud)

我想将这个程序包装成一个调用的shell脚本execute,可以事先做一些设置

#!/bin/bash

# Do something interesting
python main.py
Run Code Online (Sandbox Code Playgroud)

现在让我们说我想使用管道

./execute < inputData.txt > outputData.txt
Run Code Online (Sandbox Code Playgroud)

我应该如何将这些管道(或|管道)重定向到我的python脚本?

像下面的东西,但更通用(我不知道我的输入和输出文件的名称,或者是否有管道,也许我只是想要stdin/stdout)

python main.py < inputData.txt > outputData.txt
Run Code Online (Sandbox Code Playgroud)

一个快速的黑客就是让我的python可执行文件运行而不是将它包装在shell脚本中,但我更感兴趣的是学习管道.

bash shell redirect pipe child-process

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

你如何阅读Python模块的源代码?

我试图理解一些内置的Python模块是如何工作的.

例如,使用代码:

from Tkinter import *
root = Tk()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

功能的定义在哪里Tk

我一直在搜索tkinter源代码但找不到它.代码几次调用import Tkinter也很奇怪,因为这 Tkinter,为什么它自己导入?

希望有人能帮助解决我的困惑

python tkinter python-module python-import

3
推荐指数
2
解决办法
591
查看次数

当$ STRING以“ \ t \ t”结尾时,如何使split(/ \ t /,$ STRING)检测空值?

我怎样才能使split(/\t/, $STRING)检测空项目时,$STRING两端用"\t\t"

使用Perl脚本,我试图根据项目之间的分隔符来分割字符串,然后计算并使用这些项目。但是,当字符串以s结尾时,脚本不会计算空项目。

例:

string="value1\tvalue2\t\t\t\t" (值1,值2和4个空项目)

但计数2个项目(值1,值2):

$STRING="value1\tvalue2\t\t\t\t";
print $STRING."\n";
my @F = split(/\t/, $STRING);
print scalar(@F)."\n";

# The number of items must match the number of header name
if( scalar(@F) == 6 )
            {
                    print  "Done \n";
            }
Run Code Online (Sandbox Code Playgroud)

代码显示:

value1  value2      
2
Run Code Online (Sandbox Code Playgroud)

而预期的是:

value1  value2  
6
Run Code Online (Sandbox Code Playgroud)

string perl whitespace trailing

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

使用Perl的正则表达式查找项目

我有一个设置用于从文本文件中检索数据的Perl脚本,但有一件事情不会显示是以星号开头的.这是我的代码:

while(<INFILE>) {
   chomp $_;

    if (m/^\s*$/) {
        next;
    }

    my @fields = split(/\  /,$_);
    my @output;

    foreach my $field(@fields) {
        if($field =~ /^\*?[ABMQRWY][A-Z0-9]{4}235 / ) {
            push @output,$field;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的if语句抓住了8个字符长的所有内容,但有时在作业面前有*它不会拉动.我该如何包含它?我知道我需要逃避它,但不知道该把它放在哪里.

以下是我要提取的数据的一些示例:

W50DW235 DW
M50DW235 DW
Q0608235 08
APJ40235 40
M3515235 15
M34DW235 DW
M3408235 08
RES08235 08
BSP20235 20
W1208235 08
B3008235 08
Run Code Online (Sandbox Code Playgroud)

这是文件中的原始行:

18122/0655 18122/0700  W50DW235 DW        LEV001  002  D50DW235
18122/0735 18122/0740  M50DW235 DW        LEV002  002  W50DW235
Run Code Online (Sandbox Code Playgroud)

它不会用星号拉出的线是这样的:

18123/0300 18123/0400 *D1708235 08        LEV001  001
Run Code Online (Sandbox Code Playgroud)

为了提取数据,我使用以下方法来捕获具有两个空格的项目:

my …
Run Code Online (Sandbox Code Playgroud)

regex perl text-processing escaping

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