小编Zes*_*Rex的帖子

Python,PyInstaller错误:没有名为"Encodings"的模块和系统编解码器丢失

我正在使用Python 3.3.3,我一直在尝试从一个简单的.py脚本构建一个.exe.

我的脚本看起来像这样:

import encodings

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

并正确执行.

当我尝试使用此命令使用PyInstaller构建它时:

pyinstaller --onefile Testmodul.py

并尝试打开我的.exe它出现此错误: Fatal Python error: Py_Initialize: unable to load the file system codec, ImportError: No module named 'encodings'

我已经尝试在我的测试文件中导入'编码'模块,但它仍然无法正常工作,我也尝试了py2exe,它也根本不工作.

有什么我做错了吗?我必须在PATH中设置一些东西吗?已经包含了"C:\ Python33"的正确路径.

编辑:对于每个有这个问题的人:我放弃了,在全新安装windows和python以及所有其他东西之后,我再次尝试了它,就像以前一样,它没有问题工作..值得一试如果你真的很绝望!

python exe py2exe pyinstaller

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

为什么我应该在控制器中返回 Task<IActionResult>?

因此,我已经尝试掌握相当长一段时间了,但看不到将每个控制器端点声明为异步方法的意义。

让我们看一下 GET-Request 来形象化这个问题。

这是我处理简单请求的方法,只需完成工作并发送响应即可。

[HttpGet]
public IActionResult GetUsers()
{
      // Do some work and get a list of all user-objects.
      List<User> userList = _dbService.ReadAllUsers(); 
      return Ok(userList);
} 
Run Code Online (Sandbox Code Playgroud)

下面是async Task<IActionResult>我经常看到的选项,它与上面的方法相同,但方法本身返回一个Task. 人们可能会认为,这种方法更好,因为您可以收到多个请求,并且它们可以异步处理,但我测试了这种方法和上面的方法,得到了相同的结果。两者都可以同时处理多个请求。那么我为什么要选择这个签名而不是上面的签名呢?我只能看到这样做的负面影响,例如由于异步而将代码转换为状态机。

[HttpGet]
public async Task<IActionResult> GetUsers()
{
      // Do some work and get a list of all user-objects.
      List<User> userList = _dbService.ReadAllUsers(); 
      return Ok(userList);
} 
Run Code Online (Sandbox Code Playgroud)

下面的这种方法也是我无法理解的。我看到很多代码都具有这种设置。他们使用一种async方法await,然后返回结果。这样的等待会使代码再次顺序化,而不是享受多任务/多线程的好处。我在这一点上有错吗?

[HttpGet]
public async Task<IActionResult> GetUsers()
{
      // Do some work and get a list of all …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net .net-core

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

如何打印用作%hash值的@array的$元素?

我认为对于有经验的人来说这应该很容易解决,对我来说虽然我在谷歌上尝试和搜索这个但是找不到适合我情况的东西.我只想让$ amountok和$ amountko给出它们在索引0和1处的值,但它不是这样的(参见#mark).

print ERGEBNIS "ID;Amount;Amount OK;Amount KO\n";
foreach my $key (keys %elementhash){
  my $sum = 0;              
  foreach $valueofkey(@{$elementhash{$key}}){                   
     $sum += $valueofkey;           
  }

  #my $amountok= @{$elementhash{$key}[0]};
  #my $amountko= @{$elementhash{$key}[1]};

  print ERGEBNIS $key.";".$sum.";".$amountok.";".$amountko."\n";

}
Run Code Online (Sandbox Code Playgroud)

这会让我错误:"不能使用字符串"7"作为数组引用.",这必须是可能的,但我只是不知道如何!感谢你们

这是%elementhash的Dumper输出:

 $VAR1 = {                '1000' => [7],               
                          '2000' => [5],                  
                          '3000' => [56, 12]              
         };                     
Run Code Online (Sandbox Code Playgroud)

arrays perl hash perl-data-structures

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

使用 SSH.NET 连接到 OpenSSH 7.4p1 失败并显示“服务器响应在位置处包含空字符”但在 WinSCP 中有效

我正在尝试使用 SSH.NET (2020.0.0) 连接到 SFTP 服务器。

我的代码看起来很简单:

try
{
    var x  = new ConnectionInfo(FtpIpAddress, 22, FtpUser,
        new PasswordAuthenticationMethod(FtpUser, FtpPw));

    using (var sftpClient = new SftpClient(x))
    {
       sftpClient.Connect();
       sftpClient.Disconnect();
    }
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,出现以下错误:

try
{
    var x  = new ConnectionInfo(FtpIpAddress, 22, FtpUser,
        new PasswordAuthenticationMethod(FtpUser, FtpPw));

    using (var sftpClient = new SftpClient(x))
    {
       sftpClient.Connect();
       sftpClient.Disconnect();
    }
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决它,手动使用 WinSCP 时它工作正常,使用 WinSCP.NET 时,它与代码一起工作也很好。但是我不能在 Linux 发行版上使用 WinSCP.NET。

所以有人知道出了什么问题吗?

.net c# sftp openssh ssh.net

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

在Perl中,是否有一个运算符来粗略地检查另一个字符串的字符串?

我想这是一个非常简单的问题,但经过20分钟的谷歌搜索,我找不到任何解决我的问题.

所以我想检查一个字符串变量,看它是否有'OK'某个地方.

我试过用~~~.~给我一个错误,~~并说不是正确的操作员猜测.我认为~像"粗略"的东西,但似乎并非如此.这是我的代码:

open (INPUT, "<", $curfile);
while (<INPUT>) {
$firsttenchars= substr ($_, 0, 10);
if ($firsttenchars ~ "OK") 
    {
    print "success";
    }               
}
close INPUT;
Run Code Online (Sandbox Code Playgroud)

variables perl operators

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

为什么MySQL给我一个语法错误?

所以我几乎是一个新的编码新手,我有点学习试用和错误,这次我尝试使用Perl的数据库,实际上当我只使用3个表头时它很好用(终端,Zeitstempel,Ergebnisnummer )但是当我尝试添加更多标题(Ergebnistext,Transart,Belegnummer,Trace,Betrag,Kartenart,Kartennummer,Entrymode)时,它总是给我一个语法错误,我检查了半个小时,但无法找到错误.如果有人知道为什么我会感激你的帮助!这部分代码看起来像这样:

            foreach $file (@file)
        {
            $currentfile = "$currentdir\\$file";
            open(zloop, "<", $currentfile) or die "Failed to open file: $!\n";
                    while ( <zloop> ) {
                    my %row;
                    chomp;
                    @row{@headers} = split /;/;
                    my $tid = $row{'tid'}; 
                    my $zeit = $row{'zeit'};
                    my $ergebnisnummer = $row{'ergebnisnummer'};
                    my $ergebnistext = $row{'ergebnistext'};
                    my $transart = $row{'transart'};
                    my $belegnummer = $row{'belegnummer'};
                    my $trace = $row{'trace'};
                    my $betrag = $row{'betrag'};
                    my $kartenart = $row{'kartenart'}; 
                    my $kartennummer = $row{'kartennummer'};
                    my $entrymode = $row{'entrymode'}; 

    my $sth = $dbh->prepare("INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

mysql perl

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

如何让grep只扫描文件名中的前12个字符?

我试图按文件名过滤文件.

系统会要求您输入两个日期,然后我的代码会遍历所有文件,并将符合搜索参数的所有文件写入数组.

但是,如果我输入一个不准确的范围,如2014年... 2016年,那么与我的搜索无关的文件(因为我只想将前8个字符作为代表日期戳的grep)就像前两个文件一样@files被过滤了因为它们的名称包含2014年,2015年或2016年.

@files = 20120830_600020143_1_Log.csv (wrong because year 2012)
         20130830_600020161_1_Log.csv (wrong because year 2013)
         20150830_600020162_1_Log.csv
         20160830_600020121_1_Log.csv
Run Code Online (Sandbox Code Playgroud)

如何只grep文件名的前12个字符?

我想到了混合substr但无法让它发挥作用.

这是我需要改变的代码.在这种情况下$daterange"2016"

foreach $folder ( @folder ) {

    $curdir = "$scriptdir\\$folder";

    opendir my $dir_b, "$curdir" or die "Can't open directory: $!";
    my @files = grep { /$daterange/ } readdir $dir_b;
    closedir $dir_b;

    foreach $files ( @files ) {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

perl grep

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

有没有办法在Perl中创建变量数组?

所以,我正在尝试再次,现在我被卡住了.

while (<KOERGEBNIS>){
my $counter = 0;
my $curline = $_;

for (my $run = 0; $run < $arrayvalue; $run++){
    if ($curline =~ m/@tidgef[$counter]/){
        my $row = substr($curline, 0, 140);
        push @array$counter, $row;
        print "Row $. was saved in ID: @filtered[$counter]\n";
    }
    $counter++;
}

}
Run Code Online (Sandbox Code Playgroud)

背景是我想在相同的数组中保存以相同的8个字符开头的所有行,这样我就可以计算行数并开始使用这些数组.我现在唯一能想到的就是切换和案例,但我想在将这些代码扔进垃圾之前我会先问.

示例:如果.txt中有一行像这样:

50004000_xxxxxxxxxxxxxx31
50004000_xxxxxxxxxxxxxx33
60004001_xxxxxxxxxxxxxx11
60004001_xxxxxxxxxxxxxx45
Run Code Online (Sandbox Code Playgroud)

我拿了每行的前8个字符并使用uniq过滤重复项并将它们保存在@tidgef数组中,现在我想将@ 1中的Line1和Line2保存在@ array50004000中,甚至更好@ line50004000,将Line4和Line4保存到@ array2或@ array60004001 .

我希望我能很好地解释我的问题!感谢你们

arrays variables perl

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

如何让文本框显示双倍?

我正在努力让自己习惯 C#,目前我正在使用 SharpDevelop 来完成该任务,无论如何,我有一个简单的问题,假设我想要一个 TextBox 来显示数学代码的结果,如下所示,如何做我让 TextBox 实际显示 double、int 或其他类型等类型?它总是告诉我它不能将双精度数转换为字符串或其他什么,我是个菜鸟,所以是的。

void CmdWriteClick(object sender, EventArgs e)
    {
        double var = 8.40;
        double start = 9.00;
        double end = var + start;
        textbox_end.Text = end;
    }
Run Code Online (Sandbox Code Playgroud)

我已经尝试不使用 .text 而是类似的东西。值但不起作用,有什么帮助吗?

c# textbox var

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