小编Pat*_*ick的帖子

Python命令行参数

我刚刚开始使用python,所以我正在努力解决一个非常简单的例子.基本上我想通过命令行参数传递可执行文件的名称及其输入,例如:

python myprogram refprogram.exe refinput.txt
Run Code Online (Sandbox Code Playgroud)

这意味着在执行时myprogram,它会执行refprogram.exe并作为参数传递给它refinput.我试着通过以下方式做到:

import sys, string, os
print sys.argv

res = os.system(sys.argv(1)) sys.argv(2)
print res
Run Code Online (Sandbox Code Playgroud)

我得到的错误消息是:

res = os.system(sys.argv(1)) sys.argv(2)
                           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

谁知道我做错了什么?

我正在运行Python 2.7

python command-line command-line-arguments

25
推荐指数
3
解决办法
6万
查看次数

'result [:: - 1]'是什么意思?

我刚刚遇到以下python代码,这让我有点困惑:

 res = self.result[::-1].encode('hex')
Run Code Online (Sandbox Code Playgroud)

编码内容非常清楚,应该表示为十六进制值.然而,这个self.result [:: - 1]是什么意思,特别是冒号?

python slice

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

VHDL中奇怪的XNOR行为

导致问题的代码看起来像普通的xnor操作,如下所示:

S(1) <= L(16) xnor L(26);
Run Code Online (Sandbox Code Playgroud)

此行导致以下错误:

ncvhdl_p: *E,EXPSMI (HDL/aes_sbox_enc_depth16.vhd,169|14): expecting a semicolon (';') [9.5.1].
ncvhdl_p: *F,MAXERR: maximum error count reached (1).
TOOL: ncvhdl 10.20-s075: Exiting on Feb 14, 2012 at 12:56:05 GMT (total: 00:00:01)
Run Code Online (Sandbox Code Playgroud)

任何人都知道这里出了什么问题,分号显然在那里.是否有可能VHDL不支持xnor,如果是这样,我该如何重写它?

非常感谢!

fpga vhdl xilinx

6
推荐指数
2
解决办法
633
查看次数

Matlab:堆叠各种图

我对以下图表有疑问:

在此输入图像描述 基本上,我们在这里有两个具有相同x轴的子图.我想现在节省空间,而不是有两个带有两个x-axix标签的子图,我想要腾出它们之间的空间并将它们叠加在一起.

有没有简单的方法呢?

非常感谢!帕特里克

%% Data
t  = 0:100;
f1 = 0.3;
f2 = 0.07;
u1 = sin(f1*t);   cu1 = 'r'; %red
u2 = cos(f2*t);   cu2 = 'b'; %blue
v1 = 5*u1.^2;     cv1 = 'm'; %magenta
v2 = 5*u2.^2;     cv2 = 'c'; %cyan

figure;
h(1) = subplot(2,1,1); % upper plot
plot(t,u1,'Color',cu1,'DisplayName','u1'); hold on;
plot(t,u2,'Color',cu2,'DisplayName','u2'); hold off;

xlabel('Time t [s]');
ylabel('u [some unit]');
legend(gca,'show');

h(2) = subplot(2,1,2); % lower plot
plot(t,v1,'Color',cv1,'DisplayName','v1'); hold on;
plot(t,v2,'Color',cv2,'DisplayName','v2'); hold off;

xlabel('Time t [s]');
ylabel('v [some …
Run Code Online (Sandbox Code Playgroud)

matlab plot

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

以十六进制数组打印char缓冲区

我正在读取512个字符到一个缓冲区,并希望以十六进制显示它们.我尝试了以下方法,但它只是始终输出相同的值,尽管应该通过网络接收不同的值.

char buffer[512];
bzero(buffer, 512);
n = read(connection_fd,buffer,511);
if (n < 0) printf("ERROR reading from socket");
printf("Here is the message(%d): %x\n\n", sizeof(buffer), buffer);
Run Code Online (Sandbox Code Playgroud)

我可能在这里输出缓冲区数组的地址,而不是它的内容吗?C中是否有一个简单的方法可以执行此任务,还是需要编写自己的子例程?

c

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

Python中的SerialTimeoutException无法按预期工作

有时我没有通过串行接口获取任何数据,我想以下列方式通过异常捕获此情况:

ser          = serial.Serial(3)
ser.baudrate = 115200
timeout      = 1

while (some condidion)
  try:
    dump = ser.read(40)
  except ser1.SerialTimeoutException:
    print('Data could not be read')

ser.close()
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这个程序时,如果缓冲区中没有数据并且我陷入无限循环,则永远不会捕获异常.谁知道我在这里做错了什么?

python serial-port

4
推荐指数
1
解决办法
6003
查看次数

C和Python之间的套接字通信

我刚刚尝试了一个非常简单的示例来开始使用套接字在C应用程序和Python之间进行通信.这是一个非常简单的Python脚本:

import socket

s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/tmp/demo_socket")
print "Sending..."
s.send("Hello C from Python!")
data = s.recv(1024)
s.close()
print 'Received', repr(data)
Run Code Online (Sandbox Code Playgroud)

这里是相应的C代码,没有标题:

int main(void)
{  
  struct sockaddr_un address;
  int socket_fd, connection_fd;
  socklen_t address_length;
  pid_t child;  

  char buffer[256];
  int n;

  socket_fd = socket(AF_UNIX, SOCK_STREAM, 0);
  if (socket_fd < 0){
      printf("socket() failed\n");
      return 1;
  } 

  unlink("/tmp/demo_socket");
  memset(&address, 0, sizeof(struct sockaddr_un));

  address.sun_family = AF_UNIX;
  snprintf(address.sun_path, UNIX_PATH_MAX, "/tmp/demo_socket");

  if (bind(socket_fd, (struct sockaddr *) &address, sizeof(struct sockaddr_un)) != 0) {
      printf("bind() failed\n");
      return 1;
  } …
Run Code Online (Sandbox Code Playgroud)

c python sockets pipe

4
推荐指数
1
解决办法
7093
查看次数

python脚本和C应用程序之间持续通信

我有一个 python 脚本,它与一些网络池连接以从中读取数据,连续 320 位。这 320 位应该转发给某个 C 应用程序,它会不断地从 python 脚本中读取这 320 位并将它们放入一个 int 数组 [8]。老实说,我完全不知道这是否可行,并感谢您为这个问题提供一个起点。

我试图不合作你的一些想法,试图通过标准输入将数据从 python 发送到 C 应用程序:

测试.exe:

#include <stdio.h>
int main(void)
{
    int ch;
    /* read character by character from stdin */
    do {
    ch = fgetc(stdin);
    putchar(ch);
    } while (ch != EOF);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

测试.py:

def run(self):

    while True:           
        payload = 'some data'
        sys.stdout.write(payload)
        time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

然后我使用管道开始这整个事情: python test.py | 测试程序

不幸的是,在 test.exe 端没有接收到数据,这个数据不应该在 stdin 上可用吗?

c python

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

汉明重量为Matlab中的整数列表

相当简单的问题:我有一个整数列表,例如,

 a = [7 8]
Run Code Online (Sandbox Code Playgroud)

现在我想要一个单独的列表,其中包含列表中每个整数的汉明权重(即二进制表示中的1位数).这意味着上面的整数列表的结果应如下所示:

 res = [3 1]
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何快速完成这项工作?

binary matlab hammingweight

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

在C中的16个char数组中连接32位int块

我有以下数据类型的结果缓冲区:

 char result[16];
Run Code Online (Sandbox Code Playgroud)

问题是,结果是以4个32位的块计算的,需要分配给128位结果char.

int res_tmp[0] = 0x6A09E667;
int res_tmp[1] = 0x6A09E612;
int res_tmp[2] = 0x6A09E432;
int res_tmp[3] = 0x6A09E123;
Run Code Online (Sandbox Code Playgroud)

理想情况下,应该有类似C中的连接运算符,例如,

result = res_tmp[0] || res_tmp[1] || res_tmp[2] || res_tmp[3];
Run Code Online (Sandbox Code Playgroud)

最后,结果需要通过套接字发送如下:

while((connection_fd = accept(socket_fd, 
                          (struct sockaddr *) &address,
                          &address_length)) > -1)
{
  n = write(connection_fd, result, strlen(result));
  if (n < 0) printf("Error writing to socket\n");            
  close(connection_fd);
  break;  
}
Run Code Online (Sandbox Code Playgroud)

任何人都知道在128-bir结果中连接32位字最简单的语法char

谢谢,帕特里克

c c++ arrays

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

@和lambda在Python中意味着什么?

可能重复:
了解Python装饰器

只是尝试将一些Python代码"移植"到Java,然后我通过以下python代码:

 @fake(lambda s, t, n: [(s.field(i+1), s) for i in range(n)])
 def split(secret, threshold, num_players):
     shares = []
     for i in range(1, num_players+1):
         # do some shares calculation
     return shares
Run Code Online (Sandbox Code Playgroud)

在这个中我有一些有趣的结构,我以前从未注意过.谁能告诉我这个@fake东西的交易是什么?

def fake(replacement):
    """Replace a function with a fake version."""
    def decorator(func):
        fakes = os.environ.get('FUNC_FAKE', '')
        if fakes == '*' or func.__name__ in fakes.split():
            return replacement
        else:
            return func
    return decorator
Run Code Online (Sandbox Code Playgroud)

此外,这个lambda代表一个函数名称或者是什么处理?

python

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