From 7e2c22712084f4afe7caf548a479b5d6d2d08d74 Mon Sep 17 00:00:00 2001 From: Adam Jurkiewicz Pythonista Local Date: Wed, 17 Dec 2025 08:55:39 +0100 Subject: [PATCH] =?UTF-8?q?co=20na=20dzi=C5=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dzien_03/fake_data.py | 34 ++++++++++++++++++++++++++ dzien_03/simple_md.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 dzien_03/fake_data.py create mode 100644 dzien_03/simple_md.py diff --git a/dzien_03/fake_data.py b/dzien_03/fake_data.py new file mode 100644 index 0000000..ea258d7 --- /dev/null +++ b/dzien_03/fake_data.py @@ -0,0 +1,34 @@ +""" +'address', 'administrative_unit', 'am_pm', 'android_platform_token', 'ascii_company_email', 'ascii_email', 'ascii_free_email', 'ascii_safe_email', 'bank_country', 'bban', 'binary', 'boolean', 'bothify', 'bs', 'building_number', 'cache_pattern', 'catch_phrase', 'century', 'chrome', 'city', 'city_prefix', 'city_suffix', 'color', 'color_name', 'company', 'company_email', 'company_suffix', 'coordinate', 'country', 'country_calling_code', 'country_code', 'credit_card_expire', 'credit_card_full', 'credit_card_number', 'credit_card_provider', 'credit_card_security_code', 'cryptocurrency', 'cryptocurrency_code', 'cryptocurrency_name', 'csv', 'currency', 'currency_code', 'currency_name', 'currency_symbol', 'current_country', 'current_country_code', 'date', 'date_between', 'date_between_dates', 'date_object', 'date_of_birth', 'date_this_century', 'date_this_decade', 'date_this_month', 'date_this_year', 'date_time', 'date_time_ad', 'date_time_between', 'date_time_between_dates', 'date_time_this_century', 'date_time_this_decade', 'date_time_this_month', 'date_time_this_year', 'day_of_month', 'day_of_week', 'del_arguments', 'dga', 'domain_name', 'domain_word', 'dsv', 'ean', 'ean13', 'ean8', 'ein', 'email', 'factories', 'file_extension', 'file_name', 'file_path', 'firefox', 'first_name', 'first_name_female', 'first_name_male', 'first_name_nonbinary', 'fixed_width', 'format', 'free_email', 'free_email_domain', 'future_date', 'future_datetime', 'generator_attrs', 'get_arguments', 'get_formatter', 'get_providers', 'hex_color', 'hexify', 'hostname', 'http_method', 'iana_id', 'iban', 'image', 'image_url', 'internet_explorer', 'invalid_ssn', 'ios_platform_token', 'ipv4', 'ipv4_network_class', 'ipv4_private', 'ipv4_public', 'ipv6', 'isbn10', 'isbn13', 'iso8601', 'items', 'itin', 'job', 'json', 'language_code', 'language_name', 'last_name', 'last_name_female', 'last_name_male', 'last_name_nonbinary', 'latitude', 'latlng', 'lexify', 'license_plate', 'linux_platform_token', 'linux_processor', 'local_latlng', 'locale', 'locales', 'localized_ean', 'localized_ean13', 'localized_ean8', 'location_on_land', 'longitude', 'mac_address', 'mac_platform_token', 'mac_processor', 'md5', 'military_apo', 'military_dpo', 'military_ship', 'military_state', 'mime_type', 'month', 'month_name', 'msisdn', 'name', 'name_female', 'name_male', 'name_nonbinary', 'nic_handle', 'nic_handles', 'null_boolean', 'numerify', 'opera', 'paragraph', 'paragraphs', 'parse', 'password', 'past_date', 'past_datetime', 'phone_number', 'port_number', 'postalcode', 'postalcode_in_state', 'postalcode_plus4', 'postcode', 'postcode_in_state', 'prefix', 'prefix_female', 'prefix_male', 'prefix_nonbinary', 'pricetag', 'profile', 'provider', 'providers', 'psv', 'pybool', 'pydecimal', 'pydict', 'pyfloat', 'pyint', 'pyiterable', 'pylist', 'pyset', 'pystr', 'pystr_format', 'pystruct', 'pytimezone', 'pytuple', 'random', 'random_choices', 'random_digit', 'random_digit_not_null', 'random_digit_not_null_or_empty', +""" + +from faker import Faker +from random import randint +# import faker +import csv + +# fake_data = Faker(["pl_PL", 'en_US', 'ja_JP']) +fake_data = Faker("pl_PL") + +with open("dane.csv", "w", newline="") as plik: + for _ in range(10): + line = fake_data.name() + "," + fake_data.email() + "," + \ + fake_data.credit_card_number() + "," + fake_data.company() + "," + \ + fake_data.ios_platform_token() + "," + fake_data.postcode() + "\n" + print(line) + plik.write(line) + +# generujemy listę list dla metody writerows +fake_data_all = [] +for _ in range(3000): + wydatki = randint(500, 1000) + przychody = randint(5000, 15000) + one_row = [fake_data.name(), fake_data.email(), \ + fake_data.credit_card_number(), wydatki, przychody] + fake_data_all.append(one_row) + +with open("dane2.csv", "w", newline="") as plik_csv: + dane_writer = csv.writer(plik_csv, delimiter=",", \ + quotechar='"', quoting=csv.QUOTE_NONNUMERIC) + # dane_writer.writerow([fake_data.name(), fake_data.email()]) + dane_writer.writerows(fake_data_all) \ No newline at end of file diff --git a/dzien_03/simple_md.py b/dzien_03/simple_md.py new file mode 100644 index 0000000..4201f0b --- /dev/null +++ b/dzien_03/simple_md.py @@ -0,0 +1,55 @@ +""" +Prosty skrypt generujący plik w formacie Markdown +https://www.markdownguide.org/basic-syntax/ +""" + +import subprocess # wywoływanie poleceń systemowych !!! +import snakemd +from snakemd import Paragraph, InlineText +import pandas as pd + + +df = pd.read_csv("dane_sprzedazowe.csv", sep=";") +print(df) + +doc = snakemd.new_doc("simple_md_file") + +doc.add_header("To będzie tytuł", 3) +doc.add_paragraph("Dzisiaj tworzymy dokument w MD") +doc.add_horizontal_rule() +my_par = """ +To jest długi tekst, +może mieć wiele linijek.... + +I jest identyczny z tym, co piszemy ;-) +""" +doc.add_paragraph(my_par) +doc.add_horizontal_rule() + +# dodatnie paragrafu z tekstem Italic/Pochyłym +doc.add_element( + Paragraph( + [InlineText("Test DataFrame", italics=True)] + )) +# tworzymy listę list z wartości data frame +data_sales = df.values.tolist() +print(data_sales) +table_header = ["**Rok**", "~~Sprzedaż kart 5GB~~", "*Sprzedaż Abonamentów*", "Światłowody"] +# tworzymy tabelę z nagłówkiem i danymi +doc.add_table( + table_header, + data_sales, ) + +doc.output_page() + +# dodamy wywołanie pandoc'a +# https://docs.python.org/3/library/subprocess.html#module-subprocess + +# pandoc -o dokument.docx simple_md_file.md +ret_code = None +try: + command = ["pandoc", "-o", "dokument.xlsx", "simple_md_file.md"] + ret_code = subprocess.run(command, capture_output=True) + print(f"Returned: {ret_code}") +except: + print(f"ERROR: {ret_code}") \ No newline at end of file