社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

hygull

hygull 最近创建的主题
hygull 最近回复了
5 年前
回复了 hygull 创建的主题 » 从其他/Program python调用函数

first.py ,像这样更改代码。

w 模式用于写入操作。在for循环的每个迭代中,您将覆盖最后一个内容并编写新内容。所以 input.txt 正在 ef 最后。

list=["ab","cd","ef"]

for i in list:
    with open("input.txt", "a+") as input_file:
        print("{}".format(i), file = input_file)

现在你会得到你所期望的。现在 输入文件 会有以下不同于你的情况。

ab
cd
ef

注: 但如果你愿意的话 第一个.py 第二次,它将继续添加为 a+ 如果文件不存在,则创建文件,否则将追加文件。 为了更好地处理此代码,请使用 操作系统路径 模块的 exists() 功能。

如果你想调用 第一个.py 然后将其包装在函数中。然后将该函数导入 second.py 打电话来。

例如

首先确保 第一个.py 第二年 在同一个目录中。

第一个.py

def create_file(file_name):
    list=["ab","cd","ef"]
    for i in list:
        with open(file_name, "a+") as input_file:
            print(" {}".format(i), file = input_file)

第二年

from first import create_file

def read_file(file_name):
    # Create file with content
    create_file(file_name)

    # Now read file content
    input_file = open(file_name, 'r')     
    for line in input_file:
        if "ef" in line:
           print(line)

read_file('input.txt')

打开终端,导航到此目录,运行 python second.py .

https://www.learnpython.org/en/Module... | https://www.digitalocean.com... | https://www.programiz.com/pytho... 如果你想阅读并尝试 如何创建模块/包 在巨蟒中。

更新 :上面有一个问题,正如您在comment中提到的,在每次运行时,它都会附加内容。我们把它改一下 第一个.py 如下所示。

import os

def create_file(file_name):
    l = ["ab", "cd", "ef"]

    if os.path.exists(file_name): # If file `input.txt` exists (for this example)
        os.remove(file_name)      # Delete the file

    for i in l:
        with open(file_name, "a+") as input_file:
            print(" {}".format(i), file = input_file)

就是这样(如果你卡住了,请在评论中更新)。

5 年前
回复了 hygull 创建的主题 » python csv文件读取和保存

这只是修复代码。你可以在 object of type '_csv.reader' has no len(), csv data not recognized 是的。

有一个更好的解决方案,你正在寻找什么。

如何修复?

  • 初始化 seat 作为 [] 我们知道那个元组 () 是不变的。

  • seating 是一个迭代器,因此如果您希望计算长度,请将其转换为列表。

眼镜蛇

import csv 

def load():
    seat = []
    csvfile = open('coba.csv') 
    seating = csv.reader(csvfile)
    print(type(seating))

    seating = list(seating)
    print(type(seating))

    for line in seating:
        print(seating)
        if len(line[0].split(',')) == 5:
            #print(' | '.join(row))
            seat.append(line)

    print(seat)

load()

"""
<class '_csv.reader'>
<class 'list'>
[['[BUSINESS]'], ['A1,A2,A3,A4,A5'], ['B1,B2,B3,B4,B5']]
[['[BUSINESS]'], ['A1,A2,A3,A4,A5'], ['B1,B2,B3,B4,B5']]
[['[BUSINESS]'], ['A1,A2,A3,A4,A5'], ['B1,B2,B3,B4,B5']]
[['A1,A2,A3,A4,A5'], ['B1,B2,B3,B4,B5']]
"""

你可以这样试一试。

使用 pandas.dataframe.groupby()

>>> import pandas as pd
>>>
>>> s = """/dir1/dir2/abc.jpg
... /dir1/dir2/abc.jpg
... /dir1/dir2/def.jpg
... /dir1/dir2/hij.jpg
... /dir1/dir2/hij.jpg
... /dir1/dir2/hij.jpg
... /dir1/dir2/hij.jpg
... /dir1/dir2/hij.jpg
... /dir1/dir2/klm.jpg
... /dir1/dir2/klm.jpg"""
>>>
>>> filenames = s.split('\n')
>>> filenames
['/dir1/dir2/abc.jpg', '/dir1/dir2/abc.jpg', '/dir1/dir2/def.jpg', '/dir1/dir2/hij.jpg', '/dir1/dir2/hij.jpg', '/dir1/dir2/hij.jpg', '/dir1/dir2/hij.jpg', '/dir1/dir2/hij.jpg', '/dir1/dir2/klm.jpg', '/dir1/dir2/klm.jpg']
>>>
>>> df = pd.DataFrame(d)
>>> df
             Filename
0  /dir1/dir2/abc.jpg
1  /dir1/dir2/abc.jpg
2  /dir1/dir2/def.jpg
3  /dir1/dir2/hij.jpg
4  /dir1/dir2/klm.jpg
5  /dir1/dir2/klm.jpg
>>>
>>> d = {"Filename": filenames}
>>> df = pd.DataFrame(d)
>>>
>>> df
             Filename
0  /dir1/dir2/abc.jpg
1  /dir1/dir2/abc.jpg
2  /dir1/dir2/def.jpg
3  /dir1/dir2/hij.jpg
4  /dir1/dir2/hij.jpg
5  /dir1/dir2/hij.jpg
6  /dir1/dir2/hij.jpg
7  /dir1/dir2/hij.jpg
8  /dir1/dir2/klm.jpg
9  /dir1/dir2/klm.jpg
>>>
>>> groups = df.groupby('Filename').groups
>>> groups
{'/dir1/dir2/abc.jpg': Int64Index([0, 1], dtype='int64'), '/dir1/dir2/def.jpg': Int64Index([2], dtype='int64'), '/dir1/dir2/hij.jpg': Int64Index([3, 4, 5, 6, 7], dtype='int64'), '/dir1/dir2/klm.jpg': Int64Index([8, 9], dtype='int64')}
>>>
>>> instances = []
>>> filenames = []
>>>
>>> for group in groups:
...     instances.append(len(groups[group]))
...     filenames.append(group)
...
>>> df = pd.DataFrame({"Filename": filenames, "Instances": instances})
>>> df
             Filename  Instances
0  /dir1/dir2/abc.jpg          2
1  /dir1/dir2/def.jpg          1
2  /dir1/dir2/hij.jpg          5
3  /dir1/dir2/klm.jpg          2
>>>