小编Syn*_*nia的帖子

使用python,如何阅读文件的"创建日期"?

我正在python中编写一个简短的脚本,它将扫描图像文件的文件夹列表,然后重新组织它们.

组织它们的一种可选方式是我们希望它们创建日期.

目前,我正在尝试按如下方式阅读图像创建日期

import os.path, time

f = open("hi.jpg")
data = f.read()
f.close()
print "last modified: %s" % time.ctime(os.path.getmtime(f))
print "created: %s" % time.ctime(os.path.getctime(f))
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误

Traceback (most recent call last):
  File "TestEXIFread.py", line 6, in <module>
    print "last modified: %s" % time.ctime(os.path.getmtime(f))
  File "/usr/lib/python2.7/genericpath.py", line 54, in getmtime
    return os.stat(filename).st_mtime
TypeError: coercing to Unicode: need string or buffer, file found
Run Code Online (Sandbox Code Playgroud)

谁能告诉我它意味着什么?

python exif image datecreated

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

使用react-testing-library测试卸载

我对查询元素何时/如何更新感到困惑。例如:

我有一个可以计数的按钮。当数到3时,它就消失了。

import React, { useState } from "react";

export default () => {
  const [count, setCount] = useState(0);

  return (
    <div>
      {count < 3 && (
        <button onClick={() => setCount(count + 1)}>{count}</button>
      )}
    </div>
  );
};
Run Code Online (Sandbox Code Playgroud)

我正在像这样测试它:

test("Counter counts up and disappears", () => {
  const { queryByText } = render(<App" />);

  const button = queryByText("0");
  expect(button.textContent).toEqual("0");

  fireEvent.click(button);
  expect(button.textContent).toEqual("1");

  fireEvent.click(button);
  expect(button.textContent).toEqual("2");

  fireEvent.click(button);
  expect(button).toBe(null);
});
Run Code Online (Sandbox Code Playgroud)

测试失败并出现以下错误:

expect(received).toBe(expected)

Expected value to be (using ===):
  null
Received:
  <button>2</button>
Run Code Online (Sandbox Code Playgroud)

为什么按钮元素知道其文本内容已更改?我们不需要在每次点击后运行queryByText("1")and 。 …

reactjs react-test-renderer react-testing-library

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

如何使用 ESLint 捕获 React 中未声明的变量?

前几天我注意到 ESLint 允许我使用未定义的变量。这是一个简单的例子:

import React from 'react';

export default class test extends React.Component {
    render(){
        var a = b;
        var b = 1;
        return <h1>{a}</h1>
    }
}
Run Code Online (Sandbox Code Playgroud)

带有 ESLint 插件的 Visual Studio Code 不会在第一个“b”下绘制红线。使用 webpack 编译时,没有 eslint 错误。在浏览器中运行时,控制台甚至不会记录任何错误。我知道出现问题的唯一方法是屏幕上没有显示任何内容。

奇怪的是,如果我删除 'var b = 1',ESLint 会给我一个错误,指出 b 未定义。

这是我的 eslint 配置;没什么特别的

{
"parser":"babel-eslint",
"plugins":[
    "react"
],
"rules":{ },
"extends":["eslint:recommended", "plugin:react/recommended"]
Run Code Online (Sandbox Code Playgroud)

}

这里有什么问题?我如何配置 ESLint 来捕获将来类似的错误?

谢谢

undefined reactjs eslint webpack

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

在 Jest 中,循环输入和预期输出数组的最佳方法是什么?

如果我想为一个将东西加在一起的计算器编写一个测试。我可能会这样定义我的测试:

const tests = [
    {
      input: [1, 2],
      expected: 3,
    },
    {
      input: [2, 1],
      expected: 3,
    },
    {
      input: [3, 4],
      expected: 7,
    },
    {
      input: [2, 10],
      expected: 12,
    },
    {
      input: [2, 5],
      expected: 7,
    },
    ...
]

  tests.forEach((t) => {
    expect(add(t.input)).toEqual(t.expected)
  })
Run Code Online (Sandbox Code Playgroud)

问题是,如果其中一项测试失败,错误只会显示:

    Expected: "7"
    Received: "10"

      216 |   tests.forEach((t) => {
    > 217 |     expect(add(t.input)).toEqual(t.expected)
          |                                        ^
      218 |   })
Run Code Online (Sandbox Code Playgroud)

由此看来,我分不清是3+4算错了,还是2+5算错了。

另一种方法是不使用数组,而是将每个数组定义为自己的测试。然而,这需要更多的代码,并且您需要将expect语句复制粘贴到各处。

那么,测试复杂的计算函数(需要传递许多不同的输入排列以确保其正常工作)的最佳方法是什么?

testing automated-tests unit-testing jestjs

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

使用SQLite和Python从数据库读取:提供的绑定数量不正确

我正在使用以下python脚本读出数据库:

cur.execute("SELECT * FROM pending where user = ?", (ID))
Run Code Online (Sandbox Code Playgroud)

ID是某人的名字,在这种情况下是"Jonathan".

但是,当我尝试运行此脚本时,我收到错误说

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/cherrypy/_cprequest.py", line 606, in respond
    cherrypy.response.body = self.handler()
  File "/usr/lib/pymodules/python2.7/cherrypy/_cpdispatch.py", line 25, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "proj1base.py", line 470, in editFriends
    cur.execute("SELECT * FROM pending where user = ?", (ID))
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.
Run Code Online (Sandbox Code Playgroud)

我是SQLite的新手,所以我猜我在语法上犯了一个非常愚蠢的错误.然而,在网上搜索了一段时间之后,我似乎找不到与其他人不同的东西.

任何帮助将非常感激.或者如果您需要更多代码,请告诉我.

谢谢

python database sqlite binding

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

Python和SQLite:检查数据库中是否存在项目?

我有一个方法,它将希望注册的用户的用户名和密码写入数据库.在存储他们提供给数据库的用户名和密码之前,我想检查他们选择的用户名是否已存在于"待处理"列表或已批准的"联系人"列表中.

这是我以前用来做的代码:

@cherrypy.expose
def writePending(self, username=None, password=None, message=None, signin=None):
    """ Add request of friendship into a database which stores all
        pending friendships.
    """

    page = get_file(staticfolder + "/html/friendingPage.html")

    if username != "" and password != "" and message !="":
        con = lite.connect('static/database/Friendship.db')
        cur = con.cursor()

        with con:      
            cur.execute("CREATE TABLE IF NOT EXISTS pending(user TEXT, pass TEXT, info TEXT)")
            cur.execute("CREATE TABLE IF NOT EXISTS contacts(user TEXT, pass TEXT)")

            "Check to see if the username is already registered"

            cur.execute("Select * from pending …
Run Code Online (Sandbox Code Playgroud)

python sqlite if-statement

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

在Java中,为什么在使用二进制搜索搜索数组时会返回负数?

我是Java的初学者,正在学习使用数组.据我所知,当使用Array的二进制搜索方法时,如果找不到该条目,它将返回一个负数.但是,在下面的代码中,我得到了一个9,10和11的负数.

我想知道是否有人可以帮助指出我做错了什么?谢谢!

   String [] oneToSixteen = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"};

   System.out.println("Searching for 7: "+ Arrays.binarySearch(oneToSixteen, "7"));
   System.out.println("Searching for 8: "+ Arrays.binarySearch(oneToSixteen, "8"));
   System.out.println("Searching for 9: "+ Arrays.binarySearch(oneToSixteen, "9"));
   System.out.println("Searching for 10: "+ Arrays.binarySearch(oneToSixteen, "10"));
   System.out.println("Searching for 11: "+ Arrays.binarySearch(oneToSixteen, "11"));
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

Searching for 7: 6
Searching for 8: 7
Searching for 9: -17
Searching for 10: -2
Searching for 11: -2
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

java arrays sorting binary search

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

按任意键继续Linux C++

我不确定在Linux中是否有任何不同,但我在网上发现这个:

    cout << "Press Enter to Continue...";
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
Run Code Online (Sandbox Code Playgroud)

应该足够了,#include<limits>当然在标题中.

但是,它似乎在我的程序中不起作用.

它编译,运行,但它不等待.

基本上,我有一个菜单,导致方法调用显示屏幕上的人员列表.我希望在系统返回菜单之前暂停该列表.

这是菜单中的代码:

//Manager's Menu
void SelectionPage::showManagerMenu(){
    char option;
    while(true)
    {
        system("clear");                                                //Clears the terminal
        cout<<"             Flat Manager's Menu"<<endl<<endl;           //Display manager's menu
        cout << "Select Manager option" << endl;
        cout << "a) Add a new Flat Member" << endl;
        cout << "b) Delete an existing Flat Member" << endl;
        cout << "c) List Flat Members" << endl;
        cout << "d) Duties" <<endl;
        cout << "e) Resources" <<endl;
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ linux key cin any

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

在JAVA中,将图像的RGB值转换为二进制的最快方法是什么?

我试图将图像上任何给定像素的RGB值变为12位二进制,每个通道由4位表示.例如,如果一个像素的红色通道位于"255"或二进制"11111111".我希望将其转换为"1111".

我有一个代码工作,但它很慢,我想知道是否有更好的方法来做到这一点.

这就是我所做的.

  1. 我使用方法getRGB(x,y)来获取一个像素的RGB值.例如-4278864
  2. 我把它转换成3个独立的通道,例如r 190 g 181 b 176
  3. 我将它除以16得到4位表示的整数等价
  4. 我将数字转换为二进制数.
  5. 如果生成的二进制小于4位,则在二进制文件前面添加0.
  6. 连接到12位二进制以表示12位颜色输出.例如101110111011

这是我的代码:

import java.awt.Component;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class LoadImageApp extends Component {
    private static int[] rgbArray;
    private static double bitPerColor = 4.0;

    public static void main(String[] args) {

       BufferedImage img = null;
       String fileName = "Image.jpg";

       try {
           //Read in new image file
           img = ImageIO.read(new File("src/"+fileName));
       } 
       catch (IOException e){
       }

       if (img == null) {
             System.out.println("No image loaded");
        } …
Run Code Online (Sandbox Code Playgroud)

java binary rgb image type-conversion

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