Python子进程powershell实时输出

2024-05-17 14:12:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序通过安卓ADB命令成功地将数据从安卓智能手机复制到我的电脑。但是,它只显示文件传输的结果,而不显示进度条

我现在想添加进度条。我需要使用PowerShell,因为我注意到它在[]括号中的文件传输前面显示了一个进度条。甚至可以打印出来吗

编辑:

我放弃了这个想法,因为我找不到任何有用的东西。相反,我制作了自己的进度条:

  1. 步骤:我使用“adb shell ls-R-a path”(path类似于sdcard/DCIM;-a表示包含隐藏文件)来获取一个字符串,该字符串包含文件夹(以及任何子文件夹)中的所有文件。因为使用adb pull传输文件也会复制smartphone文件夹和所有子文件夹中的所有文件。然后,我使用.split(“\n”)将字符串拆分为一个列表。然后很容易只计算文件

  2. 步骤:我创建了一个while循环,只要文件传输正在运行,它就会监视目标PC文件夹。循环计算文件夹(和子文件夹)中的文件数,并向用户显示传输文件的百分比。你也可以显示估计的剩余时间,但要小心,因为智能手机和个人电脑的文件压缩不同,所以大小也不一样

它符合我的目的,实施起来并不困难,但肯定有更聪明的解决方案


Tags: 文件数据path字符串进度条命令程序文件夹
2条回答

return用于从使用return的方法返回

在这种情况下,我猜您希望将选定的值存储到某个地方,然后以相同的方法使用它

试试这个:

import java.util.Random;
public class RPS {

  public static void main (String[] args) {

    String[] list = {"rock", "paper", "scissors"}; 

    Random rand = new Random();
    int x = rand.nextInt();

    String hand = null;
    if (0 <= x && x <= 2) hand = list[x];
    // do something using hand
    System.out.println(hand);
  }
}

这段代码将消除错误,但这段代码很有可能打印null,这不是一段好代码

如果你想使用return,你可以把它放在另一个方法中

import java.util.Random;
public class RPS {

  public static void main (String[] args) {

    String hand = selectHand();
    // do something using hand
    System.out.println(hand);
  }

  private static String selectHand() {
    String[] list = {"rock", "paper", "scissors"};

    Random rand = new Random();
    int x = rand.nextInt();

    switch (x) {
      case 0: return list[0];
      case 1: return list[1];
      case 2: return list[2];
    }
    return null; // you must return something everytime from non-void method
  }
}

你可以试试这个:

public class RPS {

  public static void main (String[] args) {

    String[] list = {"rock", "paper", "scissors"}; 

    Random rand = new Random();
    int x = rand.nextInt();

    System.out.println( list[x%list.length] );     
  }

关于您的问题:rand.nextInt()很可能返回大于3的值(=数组大小)。请注意,对于长度为的数组,只有0,1。。。,n-1是有效的索引

相关问题 更多 >