I'm using python-docx and I can list the properties with doc.core_properties.__dir__() as in this question.
But assigning prs.core_properties to a python variable doesn't give a usable object.
How do I get the document properties into a python object?
Here is what I tried:
from pptx import Presentation
import os
pptFile = "myfile.pptx"
prs = Presentation(os.path.realpath(pptFile))
prsProps = prs.core_properties
print(prs.core_properties.__dir__())
print(prs.core_properties.modified)
prsProps
yields
['_partname', '_content_type', '_package', '_blob', '_element', '_rels', '__module__', '__doc__', 'default', 'author', 'category', 'comments', 'content_status', 'created', 'identifier', 'keywords', 'language', 'last_modified_by', 'last_printed', 'modified', 'revision', 'subject', 'title', 'version', '_new', '__init__', 'load', 'blob', 'part', 'content_type', 'drop_rel', 'load_rels_from_xml', 'package', 'partname', 'rels', '_blob_from_file', '_rel_ref_count', 'part_related_by', 'relate_to', 'related_part', 'target_ref', '__dict__', '__weakref__', '__new__', '__repr__', '__hash__', '__str__', '__getattribute__', '__setattr__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__getstate__', '__subclasshook__', '__init_subclass__', '__format__', '__sizeof__', '__dir__', '__class__']
2019-11-15 12:30:37
<pptx.parts.coreprops.CorePropertiesPart at 0x1d9a3fa6fd0>
I expected an object in prsProps.
Related
I am very new to Flask and pagination in general.
I need to paginate a list which is as follows:
campaign_brief_result = [
{'id': 112233, 'name': 'DSR-335', 'description': 'Desc', 'currency': '0'},
{'id': 11223344, 'name': 'DSR-336', 'description': 'Desc2', 'currency': '2'}
]
When I run the code below I am unable to find the items attribute. How can I access the data that is being paginated here?
Here is my code snippet that i am using:
paginated_data = Pagination( page = 1,
per_page = 2,
total = len(campaign_brief_result),
search = False,
record_name = 'campaign_brief_result')
print(dir(paginated_data))
the print shows me the following attributes of 'paginated_data':
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_single_page_link', 'alignment', 'anchor', 'args', 'bs_version', 'bulma_style', 'css_end_fmt', 'css_framework', 'current_page_fmt', 'display_msg', 'endpoint', 'first_page', 'format_number', 'format_total', 'found', 'gap_marker_fmt', 'has_next', 'has_prev', 'href', 'info', 'init_values', 'inner_window', 'is_disabled', 'last_page', 'link', 'link_css_fmt', 'link_size', 'links', 'next_disabled_page_fmt', 'next_label', 'next_page', 'next_page_fmt', 'outer_window', 'page', 'page_href', 'page_parameter', 'pages', 'per_page', 'per_page_parameter', 'prev_disabled_page_fmt', 'prev_label', 'prev_page', 'prev_page_fmt', 'record_name', 'search', 'search_msg', 'show_single_page', 'single_page', 'skip', 'total', 'total_pages', 'url_coding']
I am having trouble getting a list of all variables in a file, and I have tried all methods that I can find, but there isn't a way that worked for me. dir() would return this:
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
While working on this, I also had trouble importing a file from a variable containing the file name. I have tried importlib.import_module(filename), with open(filename, 'r') as infile: needed_file = infile.read(), and __import__() was deprecated, in the end, I'm just using with open().
Back to my first problem, I have tried using getattr(), however I got the same results as with dir(). These are what I have tried:
named_objects = dir(self.filedat)
print(named_objects)
attrs = [attr for attr in dir(self.filename) if not attr.startswith('__')]
file_objects = [getattr(self.filedat, attr) for attr in attrs]
named_objects = []
for attr in file_objects:
if isfunction(attr):
named_objects.append(attr.__name__)
elif not isfunction(attr) and not isclass(attr) and not ismodule(attr) and not ismethod(attr):
named_objects.append(attr.__name__)
print(file_objects)
I have also tried many variations of those, and none of which have succeeded.
Edit:
I am trying to get a list of all manually defined variables in said file.
From dialogflows API I received a protobuf.
Even after reading all documentation I have no clue how to explore the object and extract values (e.g. a string out of it)
I show you what I did:
(Pdb) dir(parameter)
['ByteSize', 'Clear', 'ClearExtension', 'ClearField', 'CopyFrom', 'DESCRIPTOR', 'DiscardUnknownFields', 'Extensions', 'FieldsEntry', 'FindInitializationErrors', 'FromString', 'HasExtension', 'HasField', 'IsInitialized', 'ListFields', 'MergeFrom', 'MergeFromString', 'ParseFromString', 'RegisterExtension', 'SerializePartialToString', 'SerializeToString', 'SetInParent', 'UnknownFields', 'WhichOneof', '_CheckCalledFromGeneratedFile', '_SetListener', '__class__', '__contains__', '__deepcopy__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__unicode__', '_extensions_by_name', '_extensions_by_number', 'fields', 'get_or_create_list', 'get_or_create_struct', 'items', 'keys', 'update', 'values']
(Pdb) parameter.ListFields
<built-in method ListFields of Struct object at 0x7f5e0c17e920>
(Pdb) parameter.ListFields()
[(<google.protobuf.pyext._message.FieldDescriptor object at 0x7f5e0c191a10>, {'endDate': string_value: "2019-07-31T23:59:59+02:00"
, 'startDate': string_value: "2019-07-01T00:00:00+02:00"
})]
(Pdb) parameter.endDate
*** AttributeError: endDate
(Pdb) parameter
fields {
key: "endDate"
value {
string_value: "2019-07-31T23:59:59+02:00"
}
}
fields {
key: "startDate"
value {
string_value: "2019-07-01T00:00:00+02:00"
}
}
(Pdb) parameter.fields
{'endDate': string_value: "2019-07-31T23:59:59+02:00"
, 'startDate': string_value: "2019-07-01T00:00:00+02:00"
}
(Pdb) type(parameter.fields)
<class 'google.protobuf.pyext._message.MessageMapContainer'>
(Pdb) parameter.fields.get('endDate')
string_value: "2019-07-31T23:59:59+02:00"
My goal is to extract startDate and endDate.
Can anybody help to explain how to systematically expore such an undocumented protobuf and get the values out of it?
I'm using pyshark to parse pcap files. I want to access layer fields using variable as shown in simple example below:
For example to access ntp server ip:
p = cap[0]
print(p.bootp.option_ntp_server)
However, I want to access it like this:
option_list = {
"12": "option_hostname",
"60": "option_vendor_class_id",
"43": "option_ntp_server"
}
p = cap[0]
print(p.bootp.%s %(option_list["43"]))
Of course this kind of access is not possible. So I tried to use getattr() like this:
getOption = getattr(p.bootp, option_list["43"])
getOption()
And it gave me following error:
'LayerFieldsContainer' object is not callable
It seems pyshark packet or layer classes is not callable.
How I can access layer fields using variable? Or can you suggest me another method to access options using option type numbers? Because I want to access this fields using option type numbers (Like option 12, option 43), not using titles.
i think OBJ pyshark.packet.fields.LayerFieldsContainer have format special, you can't use it as string.
dir (LayerFieldsContaniner) have:
['__add__', '__class__', '__class__', '__contains__', '__delattr__', '__delattr__', '__dict__', '__dir__', '__doc__', '__doc__', '__eq__', '__format__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__getstate__', '__getstate__', '__gt__', '__hash__', '__hash__', '__init__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__module__', '__module__', '__mul__', '__ne__', '__new__', '__new__', '__reduce__', '__reduce__', '__reduce_ex__', '__reduce_ex__', '__repr__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__setattr__', '__setstate__', '__setstate__', '__sizeof__', '__sizeof__', '__slots__', '__str__', '__str__', '__subclasshook__', '__subclasshook__', '__weakref__', '_formatter_field_name_split', '_formatter_parser', 'add_field', 'all_fields', 'alternate_fields', 'base16_value', 'binary_value', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'fields', 'find', 'format', 'get_default_value', 'hex_value', 'hide', 'index', 'int_value', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'main_field', 'name', 'partition', 'pos', 'raw_value', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'show', 'showname', 'showname_key', 'showname_value', 'size', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'unmaskedvalue', 'upper', 'zfill']
you can use it.
I want to get HTTP version like 'HTTP/1.1', 'HTTP/1.0' in flask. I have check all var in request, but found nothing.
['__class__', '__delattr__', '__dict__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_file_stream', '_get_stream_for_parsing', '_is_old_module', '_load_form_data', '_parse_content_type', 'accept_charsets', 'accept_encodings', 'accept_languages', 'accept_mimetypes', 'access_route', 'application', 'args', 'authorization', 'base_url', 'blueprint', 'cache_control', 'charset', 'close', 'content_encoding', 'content_length', 'content_md5', 'content_type', 'cookies', 'data', 'date', 'dict_storage_class', 'disable_data_descriptor', 'encoding_errors', 'endpoint', 'environ', 'files', 'form', 'form_data_parser_class', 'from_values', 'full_path', 'get_data', 'get_json', 'headers', 'host', 'host_url', 'if_match', 'if_modified_since', 'if_none_match', 'if_range', 'if_unmodified_since', 'input_stream', 'is_multiprocess', 'is_multithread', 'is_run_once', 'is_secure', 'is_xhr', 'json', 'list_storage_class', 'make_form_data_parser', 'max_content_length', 'max_form_memory_size', 'max_forwards', 'method', 'mimetype', 'mimetype_params', 'module', 'on_json_loading_failed', 'parameter_storage_class', 'path', 'pragma', 'query_string', 'range', 'referrer', 'remote_addr', 'remote_user', 'routing_exception', 'scheme', 'script_root', 'shallow', 'stream', 'trusted_hosts', 'url', 'url_charset', 'url_root', 'url_rule', 'user_agent', 'values', 'view_args', 'want_form_data_parsed']
Other side, the log has the HTTP version
2013-09-23 06:55:42 208.115.113.85 - - [23/Sep/2013 06:55:42] "GET /robots.txt HTTP/1.1" 404 -
So, how can I get HTTP version in flask?
From request.environ:
from flask import Flask, request
app = Flask(__name__)
#app.route('/')
def hello():
return request.environ.get('SERVER_PROTOCOL')